From 89524a7579894883a62eee674d25855832dfedfc Mon Sep 17 00:00:00 2001 From: Jeyong Date: Mon, 23 Feb 2026 12:47:38 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20=EC=9E=84=EC=8B=9C=20CI=20Workflow=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=20=EB=B0=8F=20=EB=B0=B0=ED=8F=AC=20=EC=A4=91?= =?UTF-8?q?=EB=8B=A8=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20CD=20Workflo?= =?UTF-8?q?w=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/CD.yml | 147 --------------------------------------- .github/workflows/CI.yml | 54 +++----------- 2 files changed, 10 insertions(+), 191 deletions(-) delete mode 100644 .github/workflows/CD.yml diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml deleted file mode 100644 index 6617f84..0000000 --- a/.github/workflows/CD.yml +++ /dev/null @@ -1,147 +0,0 @@ -name: CD-Dev - -on: - push: - branches: ["main"] - -concurrency: - group: creditto - cancel-in-progress: true - -jobs: - CI: - runs-on: self-hosted - - steps: - - name: 체크아웃 - uses: actions/checkout@v3 - - - name: .env 파일 생성 - run: | - - # .env 파일 생성 - touch .env - - # .env 파일 작성 - echo "${{ secrets.ENV_DEV_FILE }}" >> .env - - chmod 600 .env - - shell: bash - - - name: build & sonarqube 실행 - run: | - chmod +x gradlew - ./gradlew clean build sonar \ - -Dspring.profiles.active=dev \ - -Dsonar.projectKey=${{ secrets.SONAR_PROJECT_NAME }} \ - -Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} \ - -Dsonar.login=${{ secrets.SONAR_TOKEN }} - - shell: bash - - - name: SonarQube Quality Gate check - id: sonarqube-quality-gate-check - uses: sonarsource/sonarqube-quality-gate-action@master - with: - pollingTimeoutSec: 600 - scanMetadataReportFile: build/sonar/report-task.txt - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} - - - name: clean - run: | - rm .env - shell: bash - - - name: Docker Hub 로그인 - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Docker Image 빌드 및 태깅 - run: | - VERSION=0.${{ github.run_number }} - echo "VERSION=$VERSION" - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:$VERSION . - docker tag ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:$VERSION \ - ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:lts - - - name: Docker Image 푸쉬 - run: | - VERSION=0.${{ github.run_number }} - docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:$VERSION - docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:lts - - CD: - needs: CI - runs-on: self-hosted - - steps: - - name: .env 파일 전달 - run: | - echo "${{ secrets.ENV_DEV_FILE }}" > .env - - - name: .env 파일 업로드 - uses: appleboy/scp-action@v0.1.4 - with: - host: ${{ secrets.EC2_IP }} - username: ${{ secrets.EC2_USER }} - key: ${{ secrets.EC2_KEY }} - source: ".env" - target: ${{ secrets.EC2_ENV_PWD }} - overwrite: true - - - name: DOCKER 컨테이너 실행 - uses: appleboy/ssh-action@master - env: - DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKER_PW: ${{ secrets.DOCKERHUB_PASSWORD }} - IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }} - IMAGE_TAG: lts - with: - host: ${{ secrets.EC2_IP }} - username: ${{ secrets.EC2_USER }} - key: ${{ secrets.EC2_KEY }} - envs: DOCKER_USER,DOCKER_PW,IMAGE_NAME,IMAGE_TAG - script: | - export DOCKER_USER="${DOCKER_USER}" - export DOCKER_PW="${DOCKER_PW}" - export IMAGE_NAME="${IMAGE_NAME}" - export IMAGE_TAG="${IMAGE_TAG}" - bash ${{ secrets.DEPLOY_SCRIPT_PATH }} - - - name: Health Check - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.EC2_IP }} - username: ${{ secrets.EC2_USER }} - key: ${{ secrets.EC2_KEY }} - script: | - sleep 5; - echo "Health Check 시작...🩺" - - for i in {1..10} - do - STATUS=$(curl -s -o /dev/null -w "%{http_code}" ${{ secrets.HEALTH_URL }}) - if [ "$STATUS" -eq 200 ]; then - echo "✅ 서버 정상 응답 (HTTP 200)" - exit 0 - fi - - echo "⏳ 서버 기동 대기중... ($i/10)" - sleep 5 - done - - echo "❌ Health Check 실패" - exit 1 - - - name: Cleanup - if: always() - run: | - rm .env - rm -rf build - docker system prune -af --volumes - shell: bash \ No newline at end of file diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 714db3f..f59bbc2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -2,58 +2,24 @@ name: CI on: pull_request: - branches: [ "main", "dev" ] + branches: ["main", "dev"] jobs: build: - runs-on: self-hosted + runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v3 - - name: .env 파일 생성 - run: | - - # .env 파일 생성 - touch .env - - # .env 파일 작성 - echo "${{ secrets.ENV_FILE }}" >> .env - - chmod 600 .env - - shell: bash - - - name: build 실행 - run: | - chmod +x gradlew - ./gradlew clean build - shell: bash - - - name: sonarqube - run: | - ./gradlew sonar \ - -Dsonar.projectKey=${{ secrets.SONAR_PROJECT_NAME }} \ - -Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} \ - -Dsonar.login=${{ secrets.SONAR_TOKEN }} - - shell: bash - - - name: SonarQube Quality Gate check - id: sonarqube-quality-gate-check - uses: sonarsource/sonarqube-quality-gate-action@master + - name: Set up JDK 17 + uses: actions/setup-java@v4 with: - pollingTimeoutSec: 600 - scanMetadataReportFile: build/sonar/report-task.txt - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + distribution: temurin + java-version: "17" + cache: gradle - - name: Cleanup - if: always() + - name: Run CI validation run: | - rm .env - rm -rf build - docker system prune -af --volumes - shell: bash \ No newline at end of file + chmod +x gradlew + ./gradlew clean build --no-daemon