From 0cbbec33d9ede429a9f617eb8508add33de141a3 Mon Sep 17 00:00:00 2001 From: kkang_h00n Date: Tue, 15 Jul 2025 11:47:34 +0900 Subject: [PATCH 1/2] CD test --- .github/workflows/CD.yml | 59 ++++++++++++++++++++++++++++------------ compose.yml | 30 ++++++++++++++++++++ 2 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 compose.yml diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 21839a2..e57eed1 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -1,6 +1,8 @@ name: CD (docker -> EC2) on: + pull_request: + branches: [ "develop" ] push: branches: [ "develop", "main" ] @@ -39,9 +41,11 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + # jar 이미지 빌드 - name: Build the Docker image run: docker build . -t ${{ secrets.DOCKERHUB_USERNAME }}/greening + # jar 이미지 push - name: Push Docker image to Docker Hub run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/greening @@ -58,24 +62,43 @@ jobs: key: ${{ secrets.EC2_SSH_KEY }} script: | sudo docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p${{ secrets.DOCKERHUB_TOKEN }} - sudo docker stop greening-server || true + sudo docker compose down sudo docker container prune -f sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/greening:latest sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/greening - sudo docker run -d --log-driver=syslog \ - -e TZ=Asia/Seoul \ - -p 8080:8080 --name greening-server \ - -e "REDIS_SERVER=${{ secrets.REDIS_SERVER }}" \ - -e "DB_URL=${{ secrets.DB_URL }}" \ - -e "DB_USERNAME=${{ secrets.DB_USERNAME }}" \ - -e "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" \ - -e "JWT_SECRET=${{ secrets.JWT_SECRET }}" \ - -e "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" \ - -e "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" \ - -e "GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" \ - -e "S3_REGION=${{ secrets.S3_REGION }}" \ - -e "S3_BUCKET=${{ secrets.S3_BUCKET }}" \ - -e "S3_STORAGE_ACCESS_KEY=${{ secrets.S3_STORAGE_ACCESS_KEY }}" \ - -e "S3_STORAGE_SECRET_KEY=${{ secrets.S3_STORAGE_SECRET_KEY }}" \ - -e "S3_BASE_URL=${{ secrets.S3_BASE_URL }}" \ - ${{ secrets.DOCKERHUB_USERNAME }}/greening + sudo docker compose -d --build + +# deploy: +# needs: build +# runs-on: ubuntu-latest +# +# steps: +# - name: Deploy to AWS via SSH +# uses: appleboy/ssh-action@v0.1.10 +# with: +# host: ${{ secrets.EC2_HOST }} +# username: ${{ secrets.EC2_USER }} +# key: ${{ secrets.EC2_SSH_KEY }} +# script: | +# sudo docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p${{ secrets.DOCKERHUB_TOKEN }} +# sudo docker stop greening-server || true +# sudo docker container prune -f +# sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/greening:latest +# sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/greening +# sudo docker run -d --log-driver=syslog \ +# -e TZ=Asia/Seoul \ +# -p 8080:8080 --name greening-server \ +# -e "REDIS_SERVER=${{ secrets.REDIS_SERVER }}" \ +# -e "DB_URL=${{ secrets.DB_URL }}" \ +# -e "DB_USERNAME=${{ secrets.DB_USERNAME }}" \ +# -e "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" \ +# -e "JWT_SECRET=${{ secrets.JWT_SECRET }}" \ +# -e "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" \ +# -e "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" \ +# -e "GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" \ +# -e "S3_REGION=${{ secrets.S3_REGION }}" \ +# -e "S3_BUCKET=${{ secrets.S3_BUCKET }}" \ +# -e "S3_STORAGE_ACCESS_KEY=${{ secrets.S3_STORAGE_ACCESS_KEY }}" \ +# -e "S3_STORAGE_SECRET_KEY=${{ secrets.S3_STORAGE_SECRET_KEY }}" \ +# -e "S3_BASE_URL=${{ secrets.S3_BASE_URL }}" \ +# ${{ secrets.DOCKERHUB_USERNAME }}/greening diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..c752eb1 --- /dev/null +++ b/compose.yml @@ -0,0 +1,30 @@ +## 인스턴스 내의 저장 필요 + +services: + greening-server: + image: "${DOCKERHUB_USERNAME}/greening" + ports: + - 8080:8080 + environment: + TZ: Asia/Seoul + REDIS_SERVER: "${REDIS_SERVER}" + DB_URL: "${DB_URL}" + DB_USERNAME: "${DB_USERNAME}" + DB_PASSWORD: "${DB_PASSWORD}" + JWT_SECRET: "${JWT_SECRET}" + KAKAO_CLIENT_ID: "${KAKAO_CLIENT_ID}" + GOOGLE_CLIENT_ID: "${GOOGLE_CLIENT_ID}" + GOOGLE_CLIENT_SECRET: "${GOOGLE_CLIENT_SECRET}" + S3_REGION: "${S3_REGION}" + S3_BUCKET: "${S3_BUCKET}" + S3_STORAGE_ACCESS_KEY: "${S3_STORAGE_ACCESS_KEY}" + S3_STORAGE_SECRET_KEY: "${S3_STORAGE_SECRET_KEY}" + S3_BASE_URL: "${S3_BASE_URL}" + depends_on: + redis: + condition: service_started + + redis: + image: redis + ports: + - 6379:6379 From 32cb18272e0bb2f3fe5de357b67dcf85da488920 Mon Sep 17 00:00:00 2001 From: kkang_h00n Date: Tue, 15 Jul 2025 12:13:46 +0900 Subject: [PATCH 2/2] CD test --- .github/workflows/CD.yml | 2 +- compose.yml | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index e57eed1..f3a4309 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -66,7 +66,7 @@ jobs: sudo docker container prune -f sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/greening:latest sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/greening - sudo docker compose -d --build + sudo docker compose up -d --build # deploy: # needs: build diff --git a/compose.yml b/compose.yml index c752eb1..b3a7e61 100644 --- a/compose.yml +++ b/compose.yml @@ -7,19 +7,19 @@ services: - 8080:8080 environment: TZ: Asia/Seoul - REDIS_SERVER: "${REDIS_SERVER}" - DB_URL: "${DB_URL}" - DB_USERNAME: "${DB_USERNAME}" - DB_PASSWORD: "${DB_PASSWORD}" - JWT_SECRET: "${JWT_SECRET}" - KAKAO_CLIENT_ID: "${KAKAO_CLIENT_ID}" - GOOGLE_CLIENT_ID: "${GOOGLE_CLIENT_ID}" - GOOGLE_CLIENT_SECRET: "${GOOGLE_CLIENT_SECRET}" - S3_REGION: "${S3_REGION}" - S3_BUCKET: "${S3_BUCKET}" - S3_STORAGE_ACCESS_KEY: "${S3_STORAGE_ACCESS_KEY}" - S3_STORAGE_SECRET_KEY: "${S3_STORAGE_SECRET_KEY}" - S3_BASE_URL: "${S3_BASE_URL}" + REDIS_SERVER: "${secrets.REDIS_SERVER}" + DB_URL: "${secrets.DB_URL}" + DB_USERNAME: "${secrets.DB_USERNAME}" + DB_PASSWORD: "${secrets.DB_PASSWORD}" + JWT_SECRET: "${secrets.JWT_SECRET}" + KAKAO_CLIENT_ID: "${secrets.KAKAO_CLIENT_ID}" + GOOGLE_CLIENT_ID: "${secrets.GOOGLE_CLIENT_ID}" + GOOGLE_CLIENT_SECRET: "${secrets.GOOGLE_CLIENT_SECRET}" + S3_REGION: "${secrets.S3_REGION}" + S3_BUCKET: "${secrets.S3_BUCKET}" + S3_STORAGE_ACCESS_KEY: "${secrets.S3_STORAGE_ACCESS_KEY}" + S3_STORAGE_SECRET_KEY: "${secrets.S3_STORAGE_SECRET_KEY}" + S3_BASE_URL: "${secrets.S3_BASE_URL}" depends_on: redis: condition: service_started