From f64f87742014b2fb8a135a7872ca02423907f9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=84?= <111180367+2Jin1031@users.noreply.github.com> Date: Sun, 14 Dec 2025 20:34:45 +0900 Subject: [PATCH 1/4] Add GitHub Actions workflow for production CI/CD --- .github/workflows/prod-cd.yml | 80 +++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/prod-cd.yml diff --git a/.github/workflows/prod-cd.yml b/.github/workflows/prod-cd.yml new file mode 100644 index 0000000..8def94f --- /dev/null +++ b/.github/workflows/prod-cd.yml @@ -0,0 +1,80 @@ +name: prod-cd.yml + +on: + push: + branches: ["main"] + paths: + - "**" + +jobs: + build-and-push: + runs-on: self-hosted + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: false + + - name: Build project + run: ./gradlew clean bootJar + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and Push + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/crew-wiki:latest + ${{ secrets.DOCKERHUB_USERNAME }}/crew-wiki:${{ github.sha }} + + deploy: + needs: build-and-push + runs-on: self-hosted + steps: + - name: Deploy to Server + run: | + set -euo pipefail + BASE_DIR=/home/ubuntu/crew-wiki + IMG=${{ secrets.DOCKERHUB_USERNAME }}/crew-wiki:latest + + mkdir -p "$BASE_DIR" + cat > "$BASE_DIR/.env" <<'EOF' + SPRING_PROFILES_ACTIVE=prod + LOG_PATH=${{ secrets.LOG_PATH }} + JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} + JWT_SECRET_EXPIRE_LENGTH=${{ secrets.JWT_SECRET_EXPIRE_LENGTH }} + PROD_DB_URL=${{ secrets.PROD_DB_URL }} + PROD_DB_USERNAME=${{ secrets.PROD_DB_USERNAME }} + PROD_DB_PASSWORD=${{ secrets.PROD_DB_PASSWORD }} + AWS_CREDENTIALS_ACCESS_KEY=${{ secrets.AWS_CREDENTIALS_ACCESS_KEY }} + AWS_CREDENTIALS_SECRET_KEY=${{ secrets.AWS_CREDENTIALS_SECRET_KEY }} + S3_BUCKET=${{ secrets.S3_BUCKET }} + EOF + + docker rm -f crew-wiki || true + docker pull "$IMG" + + docker run -d \ + --name crew-wiki \ + --env-file "$BASE_DIR/.env" \ + -p 8080:8080 \ + "$IMG" From 360c439a1eb6750516e774e911ae650b3f5d8f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=84?= <111180367+2Jin1031@users.noreply.github.com> Date: Sun, 14 Dec 2025 20:35:26 +0900 Subject: [PATCH 2/4] Add main branch to CI workflow triggers --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b11cdb6..f1b6f6c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ name: backend-ci.yml on: pull_request: - branches: ["develop"] + branches: ["develop", "main"] paths: - "**" From 5e15a493acfb8fc391b8932eb08fb82e5fe63fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=84?= <111180367+2Jin1031@users.noreply.github.com> Date: Sun, 14 Dec 2025 20:36:09 +0900 Subject: [PATCH 3/4] Add SPRING_PROFILES_ACTIVE to dev-cd.yml --- .github/workflows/dev-cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dev-cd.yml b/.github/workflows/dev-cd.yml index b1dffa3..f1f96ce 100644 --- a/.github/workflows/dev-cd.yml +++ b/.github/workflows/dev-cd.yml @@ -58,6 +58,7 @@ jobs: mkdir -p "$BASE_DIR" cat > "$BASE_DIR/.env" <<'EOF' + SPRING_PROFILES_ACTIVE=dev LOG_PATH=${{ secrets.LOG_PATH }} JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} JWT_SECRET_EXPIRE_LENGTH=${{ secrets.JWT_SECRET_EXPIRE_LENGTH }} From 084513a3491a72537d6f0fc54128d8ae49d14ed0 Mon Sep 17 00:00:00 2001 From: "2jin2.1031" <2jin2.1031@gmail.com> Date: Sun, 14 Dec 2025 20:38:17 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20Dockerfile=20=ED=99=98=EA=B2=BD=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=20=EC=9D=BC=EB=B0=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4cc9fec..c0aa37f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,4 +6,4 @@ COPY build/libs/*.jar app.jar EXPOSE 8080 -ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "app.jar"] +ENTRYPOINT ["java", "-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}", "-jar", "app.jar"]