From 879e1713e9b0ca0d4893dada664c946c25b42f1f Mon Sep 17 00:00:00 2001 From: kanghana1 Date: Wed, 18 Feb 2026 00:58:55 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=EC=99=80=20=EC=9A=B4=EC=98=81=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 64 ++++++++++++++++++++++++++-------------- .github/workflows/ci.yml | 8 +++-- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 5cda1277..c663c3ae 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -1,8 +1,7 @@ name: COCKPLE_CD - on: push: - branches: [ "main" ] + branches: [ "main", "develop" ] permissions: contents: read @@ -20,16 +19,30 @@ jobs: distribution: "adopt" cache: gradle - - - name: Remove existing application.yml (if exists) + - name: Set environment variables by branch + id: vars run: | - rm -f src/main/resources/application.yml + if [ "${{ github.ref_name }}" == "main" ]; then + echo "APP_SECRET=APPLICATION" >> $GITHUB_OUTPUT + echo "DOCKER_TAG=latest" >> $GITHUB_OUTPUT + echo "COMPOSE_FILE=docker-compose.prod.yml" >> $GITHUB_OUTPUT + else + echo "APP_SECRET=APPLICATION_STAGING" >> $GITHUB_OUTPUT + echo "DOCKER_TAG=staging" >> $GITHUB_OUTPUT + echo "COMPOSE_FILE=docker-compose.staging.yml" >> $GITHUB_OUTPUT + fi + + - name: Remove existing application.yml + run: rm -f src/main/resources/application.yml - name: Make application.yml run: | mkdir -p src/main/resources - echo "${{ secrets.APPLICATION }}" > src/main/resources/application-dev.yml - mv src/main/resources/application-dev.yml src/main/resources/application.yml + if [ "${{ github.ref_name }}" == "main" ]; then + echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml + else + echo "${{ secrets.APPLICATION_STAGING }}" > src/main/resources/application.yml + fi - name: Build with Gradle run: | @@ -39,9 +52,8 @@ jobs: - name: Docker BUILD_PUSH run: | docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} - docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }} . - docker push ${{ secrets.DOCKER_REPO }} - + docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }} . + docker push ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }} - name: Deploy_EC2 uses: appleboy/ssh-action@master @@ -52,22 +64,30 @@ jobs: key: ${{ secrets.KEY }} script: | cd /home/ubuntu/home/monitor - echo "=== 배포 전 상태 ===" sudo docker ps - sudo docker image prune -f - sudo docker pull ${{ secrets.DOCKER_REPO }} - sudo docker stop cockple-app || true - sudo docker rm -f cockple-app || true + sudo docker pull ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }} - if ! sudo docker ps | grep -q redis; then - echo "Redis가 죽었음, 재시작 중..." - sudo docker compose up -d redis - sleep 10 + if [ "${{ github.ref_name }}" == "main" ]; then + sudo docker stop cockple-app || true + sudo docker rm -f cockple-app || true + if ! sudo docker ps | grep -q cockple-redis; then + echo "Redis(prod)가 죽었음, 재시작 중..." + sudo docker compose -f docker-compose.prod.yml up -d redis + sleep 10 + fi + sudo docker compose -f docker-compose.prod.yml up -d cockple-app + else + sudo docker stop cockple-app-staging || true + sudo docker rm -f cockple-app-staging || true + if ! sudo docker ps | grep -q cockple-redis-staging; then + echo "Redis(staging)가 죽었음, 재시작 중..." + sudo docker compose -f docker-compose.staging.yml up -d redis-staging + sleep 10 + fi + sudo docker compose -f docker-compose.staging.yml up -d cockple-app-staging fi - sudo docker compose up -d cockple-app - echo "=== 배포 후 상태 ===" - sudo docker ps + sudo docker ps \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a65ce41..3d44abd1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,10 +22,14 @@ jobs: distribution: 'temurin' cache: gradle - - name: Make application.yml (test용) + - name: Make application.yml (브랜치별 분기 - 개발용, 운영용) run: | mkdir -p src/main/resources - echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml + if [ "${{ github.base_ref }}" == "main" ]; then + echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml + else + echo "${{ secrets.APPLICATION_STAGING }}" > src/main/resources/application.yml + fi - name: Grant execute permission for Gradle run: chmod +x gradlew