From 978d625f7fbbd1745d09d68f005c84c472264f9e Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Tue, 27 Aug 2024 23:49:20 +0900 Subject: [PATCH 01/11] =?UTF-8?q?build:=20jib=20plugin=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 ++ versions.properties | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index cc7d601f..920ea30e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("com.diffplug.spotless") id("org.springframework.boot") id("io.spring.dependency-management") + id("com.google.cloud.tools.jib") } allprojects { @@ -22,6 +23,7 @@ subprojects { apply(plugin = "io.spring.dependency-management") apply(plugin = "com.diffplug.spotless") apply(plugin = "io.sentry.jvm.gradle") + apply(plugin = "com.google.cloud.tools.jib") java { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/versions.properties b/versions.properties index 22b11398..7863e1c6 100644 --- a/versions.properties +++ b/versions.properties @@ -15,6 +15,8 @@ plugin.io.spring.dependency-management=1.0.11.RELEASE plugin.com.diffplug.spotless=6.21.0 +plugin.com.google.cloud.tools.jib=3.1.4 + version.io.jsonwebtoken..jjwt=0.12.6 version.junit=5.9.1 From db7741528aa9e5eb6b717dbde248057fc7a62783 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 00:18:24 +0900 Subject: [PATCH 02/11] feat: update gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 13e81ca8..b09e7d43 100644 --- a/.gitignore +++ b/.gitignore @@ -392,4 +392,6 @@ application-sentry.yml application-aws.yaml # 민성 레디스 바이너리 파일 -redis-server-7.2.3-mac-arm64 \ No newline at end of file +redis-server-7.2.3-mac-arm64 + +gradle.properties \ No newline at end of file From d7b8233972d5037d12cc5a2c141a508c378e889a Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 00:19:07 +0900 Subject: [PATCH 03/11] =?UTF-8?q?feat:=20=EB=B3=80=EA=B2=BD=EB=90=9C=20ign?= =?UTF-8?q?ore=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 920ea30e..f3d74c43 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,6 +16,8 @@ allprojects { } } + + subprojects { apply(plugin = "idea") apply(plugin = "java") @@ -86,6 +88,36 @@ subprojects { tasks.test { useJUnitPlatform() } +// +// val dockerHubRegistry: String by project +// val dockerHubUsername: String by project +// val dockerHubPassword: String by project +// +// jib { +// from { +// image = "openjdk:17-jdk-slim" +// } +// to { +// image = "$dockerHubUsername/$dockerHubRegistry" +// tags = setOf("latest", "1.0-SNAPSHOT") +// +// auth { +// username = dockerHubUsername +// password = dockerHubPassword +// } +// } +// container { +// ports = listOf("8080") +// entrypoint = listOf( +// "java", +// "-Xms512m", "-Xmx512m", +// "-Xminf0.4", "-Xmaxf0.7", +// "-jar", +// "/app.jar" +// ) +// mainClass = "org.depromeet.spot.application.SpotApplication" +// } +// } } // root 모듈은 실행 파일이 없으므로 bootJar를 생성하지 않는다. From 36003267da474f0529bb756104d9789337983c24 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 00:20:11 +0900 Subject: [PATCH 04/11] =?UTF-8?q?build:=20jib=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 60 ++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f3d74c43..e04779da 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -88,36 +88,36 @@ subprojects { tasks.test { useJUnitPlatform() } -// -// val dockerHubRegistry: String by project -// val dockerHubUsername: String by project -// val dockerHubPassword: String by project -// -// jib { -// from { -// image = "openjdk:17-jdk-slim" -// } -// to { -// image = "$dockerHubUsername/$dockerHubRegistry" -// tags = setOf("latest", "1.0-SNAPSHOT") -// -// auth { -// username = dockerHubUsername -// password = dockerHubPassword -// } -// } -// container { -// ports = listOf("8080") -// entrypoint = listOf( -// "java", -// "-Xms512m", "-Xmx512m", -// "-Xminf0.4", "-Xmaxf0.7", -// "-jar", -// "/app.jar" -// ) -// mainClass = "org.depromeet.spot.application.SpotApplication" -// } -// } + + val dockerHubRegistry: String by project + val dockerHubUsername: String by project + val dockerHubPassword: String by project + + jib { + from { + image = "openjdk:17-jdk-slim" + } + to { + image = "$dockerHubUsername/$dockerHubRegistry" + tags = setOf("latest", "1.0-SNAPSHOT") + + auth { + username = dockerHubUsername + password = dockerHubPassword + } + } + container { + ports = listOf("8080") + entrypoint = listOf( + "java", + "-Xms512m", "-Xmx512m", + "-Xminf0.4", "-Xmaxf0.7", + "-jar", + "/app.jar" + ) + mainClass = "org.depromeet.spot.application.SpotApplication" + } + } } // root 모듈은 실행 파일이 없으므로 bootJar를 생성하지 않는다. From 3b6c66e9ea47d258bc7d57955f0890147c95fff9 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 03:23:32 +0900 Subject: [PATCH 05/11] =?UTF-8?q?feat:=20image=20tag=EC=97=90=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=A0=20git=20commit=20hash=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e04779da..7199f08a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,6 @@ +import org.gradle.tooling.internal.consumer.versioning.VersionDetails +import java.io.ByteArrayOutputStream + plugins { id("java") id("io.sentry.jvm.gradle") @@ -89,7 +92,7 @@ subprojects { useJUnitPlatform() } - val dockerHubRegistry: String by project + val dockerHubRepository: String by project val dockerHubUsername: String by project val dockerHubPassword: String by project @@ -98,8 +101,28 @@ subprojects { image = "openjdk:17-jdk-slim" } to { - image = "$dockerHubUsername/$dockerHubRegistry" - tags = setOf("latest", "1.0-SNAPSHOT") +// fun execCommand(command: String): String { +// val outputStream = ByteArrayOutputStream() +// project.exec { +// commandLine = command.split(" ") +// standardOutput = outputStream +// } +// return outputStream.toString().trim() +// } +// val gitHash = execCommand("git rev-parse --short HEAD") + + fun String.runCommand(): String = + ProcessBuilder(*this.split(" ").toTypedArray()) + .redirectErrorStream(true) + .start() + .inputStream + .bufferedReader() + .readText() + .trim() + val gitHash = "git rev-parse --short HEAD".runCommand() + + image = "$dockerHubUsername/$dockerHubRepository" + tags = setOf("latest", gitHash) auth { username = dockerHubUsername From 04b22f7fccaca210e62c0d717bd5f30a99594089 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 03:33:40 +0900 Subject: [PATCH 06/11] =?UTF-8?q?build:=20jib=20gradle=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7199f08a..0124b370 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -101,16 +101,6 @@ subprojects { image = "openjdk:17-jdk-slim" } to { -// fun execCommand(command: String): String { -// val outputStream = ByteArrayOutputStream() -// project.exec { -// commandLine = command.split(" ") -// standardOutput = outputStream -// } -// return outputStream.toString().trim() -// } -// val gitHash = execCommand("git rev-parse --short HEAD") - fun String.runCommand(): String = ProcessBuilder(*this.split(" ").toTypedArray()) .redirectErrorStream(true) @@ -121,8 +111,7 @@ subprojects { .trim() val gitHash = "git rev-parse --short HEAD".runCommand() - image = "$dockerHubUsername/$dockerHubRepository" - tags = setOf("latest", gitHash) + image = "$dockerHubUsername/$dockerHubRepository:$gitHash" auth { username = dockerHubUsername @@ -138,7 +127,6 @@ subprojects { "-jar", "/app.jar" ) - mainClass = "org.depromeet.spot.application.SpotApplication" } } } From eb6ce5a9e97ff1a3da774d8e4304de69a478d800 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 03:51:17 +0900 Subject: [PATCH 07/11] =?UTF-8?q?build:=20dev=20CI/CD=20script=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-build-and-deploy.yaml | 27 ++++++++++++--------- build.gradle.kts | 5 ---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dev-build-and-deploy.yaml b/.github/workflows/dev-build-and-deploy.yaml index f117acc7..e7aa112d 100644 --- a/.github/workflows/dev-build-and-deploy.yaml +++ b/.github/workflows/dev-build-and-deploy.yaml @@ -82,20 +82,25 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 + - name: Create Gradle Properties + run: | + touch gradle.properties + echo "${{ secrets.GRADLE_PROPERTIES }}" + - name: Login to DockerHub uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + username: ${{ secrets.SPOT_DOCKER_HUB_USERNAME }} + password: ${{ secrets.SPOT_DOCKER_HUB_PASSWORD }} - - name: Build and push Docker image - uses: docker/build-push-action@v4 - with: - context: . - push: true - tags: ${{ secrets.DOCKERHUB_USERNAME }}/spot-server:dev-${{ github.sha }} + - name: Build with jib + run: | + ./gradlew jib \ + -Djib.to.auth.username=${{ secrets.SPOT_DOCKER_HUB_USERNAME }} \ + -Djib.to.auth.password=${{ secrets.SPOT_DOCKER_HUB_PASSWORD }} \ + -Djib.to.image="${{ secrets.SPOT_DOCKER_HUB_USERNAME }}/${{ secrets.SPOT_DOCKER_HUB_REPOSITORY }}:dev-${{ github.sha }}" - - name: Deploy to Dev NCP Server + - name: Deploy to Dev AWS Server uses: appleboy/ssh-action@master with: host: ${{ secrets.DEV_SERVER_HOST }} @@ -103,7 +108,7 @@ jobs: password: ${{ secrets.DEV_SERVER_PASSWORD }} port: ${{ secrets.DEV_SERVER_PORT }} script: | - docker pull ${{ secrets.DOCKERHUB_USERNAME }}/spot-server:dev-${{ github.sha }} + docker pull ${{ secrets.SPOT_DOCKER_HUB_USERNAME }}/${{ secrets.SPOT_DOCKER_HUB_REPOSITORY }}:dev-${{ github.sha }} docker stop spot-server-dev || true docker rm spot-server-dev || true docker run -d --name spot-server-dev \ @@ -138,7 +143,7 @@ jobs: -e SENTRY_ENABLE_TRACING=true \ -e SENTRY_ENVIRONMENT=prod \ -e LOKI_URL=${{ secrets.LOKI_SERVER_URL }} \ - ${{ secrets.DOCKERHUB_USERNAME }}/spot-server:dev-${{ github.sha }} + ${{ secrets.SPOT_DOCKER_HUB_USERNAME }}/${{ secrets.SPOT_DOCKER_HUB_REPOSITORY }}:dev-${{ github.sha }} docker system prune -af # create-release: diff --git a/build.gradle.kts b/build.gradle.kts index 0124b370..9a4d338a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,3 @@ -import org.gradle.tooling.internal.consumer.versioning.VersionDetails -import java.io.ByteArrayOutputStream - plugins { id("java") id("io.sentry.jvm.gradle") @@ -19,8 +16,6 @@ allprojects { } } - - subprojects { apply(plugin = "idea") apply(plugin = "java") From 47b843e6c03016aa23c72b7870ce58b9a2bb4efa Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 03:53:14 +0900 Subject: [PATCH 08/11] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-build-and-deploy.yaml | 28 +-------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/.github/workflows/dev-build-and-deploy.yaml b/.github/workflows/dev-build-and-deploy.yaml index e7aa112d..3d460735 100644 --- a/.github/workflows/dev-build-and-deploy.yaml +++ b/.github/workflows/dev-build-and-deploy.yaml @@ -4,11 +4,9 @@ on: push: branches: - main - - dev pull_request: branches: - main - - dev jobs: build-and-test: @@ -144,28 +142,4 @@ jobs: -e SENTRY_ENVIRONMENT=prod \ -e LOKI_URL=${{ secrets.LOKI_SERVER_URL }} \ ${{ secrets.SPOT_DOCKER_HUB_USERNAME }}/${{ secrets.SPOT_DOCKER_HUB_REPOSITORY }}:dev-${{ github.sha }} - docker system prune -af - -# create-release: -# needs: [ build-and-test, deploy ] # deploy job이 성공적으로 완료된 후에만 실행 -## if: github.event.pull_request.merged == true # PR이 merge된 경우에만 실행 -# runs-on: ubuntu-latest -# permissions: -# contents: write -# steps: -# - name: Checkout code -# uses: actions/checkout@v4 -# -# - name: Bump version and push tag -# id: tag_version -# uses: mathieudutour/github-tag-action@v6.1 -# with: -# github_token: ${{ secrets.GITHUB_TOKEN }} -# -# - name: Create a GitHub release -# uses: ncipollo/release-action@v1 -# with: -# tag: ${{ steps.tag_version.outputs.new_tag }} -# name: Release ${{ steps.tag_version.outputs.new_tag }} -# body: ${{ steps.tag_version.outputs.changelog }} - + docker system prune -af \ No newline at end of file From d09754c16dc549c4f4da656ad892328354153bc7 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 03:57:39 +0900 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-build-and-deploy.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/dev-build-and-deploy.yaml b/.github/workflows/dev-build-and-deploy.yaml index 3d460735..65162a00 100644 --- a/.github/workflows/dev-build-and-deploy.yaml +++ b/.github/workflows/dev-build-and-deploy.yaml @@ -94,8 +94,6 @@ jobs: - name: Build with jib run: | ./gradlew jib \ - -Djib.to.auth.username=${{ secrets.SPOT_DOCKER_HUB_USERNAME }} \ - -Djib.to.auth.password=${{ secrets.SPOT_DOCKER_HUB_PASSWORD }} \ -Djib.to.image="${{ secrets.SPOT_DOCKER_HUB_USERNAME }}/${{ secrets.SPOT_DOCKER_HUB_REPOSITORY }}:dev-${{ github.sha }}" - name: Deploy to Dev AWS Server From ebe92c0d1c2c06cd110a5e37c8dc700d6b9dab41 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 04:12:38 +0900 Subject: [PATCH 10/11] =?UTF-8?q?fix:=20CI=EC=97=90=EB=8F=84=20gradle.prop?= =?UTF-8?q?erties=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-build-and-deploy.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/dev-build-and-deploy.yaml b/.github/workflows/dev-build-and-deploy.yaml index 65162a00..e1ded870 100644 --- a/.github/workflows/dev-build-and-deploy.yaml +++ b/.github/workflows/dev-build-and-deploy.yaml @@ -35,6 +35,11 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew + - name: Create Gradle Properties + run: | + touch gradle.properties + echo "${{ secrets.GRADLE_PROPERTIES }}" + - name: Build with Gradle run: ./gradlew build -x test --stacktrace --parallel From a796fe7f1a6a78758a6d3d0364524d8ce7cd9357 Mon Sep 17 00:00:00 2001 From: EunjiShin Date: Wed, 28 Aug 2024 04:17:07 +0900 Subject: [PATCH 11/11] =?UTF-8?q?fix:=20gradle.properties=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev-build-and-deploy.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dev-build-and-deploy.yaml b/.github/workflows/dev-build-and-deploy.yaml index e1ded870..fee778be 100644 --- a/.github/workflows/dev-build-and-deploy.yaml +++ b/.github/workflows/dev-build-and-deploy.yaml @@ -38,7 +38,7 @@ jobs: - name: Create Gradle Properties run: | touch gradle.properties - echo "${{ secrets.GRADLE_PROPERTIES }}" + echo "${{ secrets.GRADLE_PROPERTIES }}" >> gradle.properties - name: Build with Gradle run: ./gradlew build -x test --stacktrace --parallel @@ -88,7 +88,7 @@ jobs: - name: Create Gradle Properties run: | touch gradle.properties - echo "${{ secrets.GRADLE_PROPERTIES }}" + echo "${{ secrets.GRADLE_PROPERTIES }}" >> gradle.properties - name: Login to DockerHub uses: docker/login-action@v2