From 84a7c970896068c089168a23aa6a3f0487d279fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EA=B5=90=ED=9C=98?= Date: Mon, 20 May 2024 16:02:56 +0900 Subject: [PATCH] feat: cicd-pipeline --- .github/workflows/cogo_cicd_gradle.yml | 33 ++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cogo_cicd_gradle.yml b/.github/workflows/cogo_cicd_gradle.yml index b7debfa..47f33dc 100644 --- a/.github/workflows/cogo_cicd_gradle.yml +++ b/.github/workflows/cogo_cicd_gradle.yml @@ -2,9 +2,9 @@ name: Java CI with Gradle on: push: - branches: [ "main" ] + branches: ["main"] pull_request: - branches: [ "main" ] + branches: ["main"] permissions: contents: read @@ -13,36 +13,43 @@ jobs: build-docker-image: runs-on: ubuntu-latest steps: + # 리포지토리 체크아웃 - name: Checkout repository uses: actions/checkout@v3 + # JDK 17 설정 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - # Convert line endings to Unix format + # 줄 끝 형식을 Unix 형식으로 변환 - name: Convert line endings to Unix run: | sudo apt-get install dos2unix dos2unix ./gradlew + # gradlew에 실행 권한 부여 - name: Grant execute permission for gradlew run: chmod +x ./gradlew + # Gradle을 사용하여 Spring Boot 애플리케이션 빌드 - name: Build with Gradle run: ./gradlew clean bootJar + # Docker 이미지를 빌드 - name: Docker image build run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver . + # Docker Hub에 로그인 - name: Docker login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} + # Docker 이미지를 Docker Hub에 푸시 - name: Docker Hub push run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver @@ -50,16 +57,32 @@ jobs: needs: build-docker-image runs-on: self-hosted steps: + # Docker 이미지를 EC2에서 pull - name: Docker pull run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver + # 기존 cogo 컨테이너 중지 - name: Docker stop container - run: sudo docker stop $(sudo docker ps -q) 2>/dev/null || true + run: sudo docker stop cogo 2>/dev/null || true + # 기존 cogo 컨테이너 삭제 + - name: Docker remove container + run: sudo docker rm cogo 2>/dev/null || true + + # 새 컨테이너 실행 - name: Docker run new container - run: sudo docker run --name github-actions-demo --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver + run: | + sudo docker run --name cogo --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver + sleep 5 # 컨테이너 실행 시간을 확보 + sudo docker ps -a # 모든 컨테이너 목록 출력 + # 실행된 컨테이너의 로그 확인 + - name: Check Docker logs + run: sudo docker logs cogo || true # 컨테이너 로그 출력 + + # 미사용 Docker 이미지 삭제 - name: Delete old docker image run: sudo docker system prune -f +