diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 86fdd19a..0724a872 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,102 +13,81 @@ jobs: contents: read steps: - # 코드 체크아웃 - - uses: actions/checkout@v4 - - # Java와 Gradle 설정 - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - # 환경 변수 설정 - - name: Set environment variables - run: | - echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> $GITHUB_ENV - echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV - echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> $GITHUB_ENV - echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> $GITHUB_ENV - echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> $GITHUB_ENV - echo "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" >> $GITHUB_ENV - echo "MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" >> $GITHUB_ENV - echo "PASSWORD=${{ secrets.PASSWORD }}" >> $GITHUB_ENV - echo "URL=${{ secrets.URL }}" >> $GITHUB_ENV - echo "OPEN_API_KEY=${{ secrets.OPEN_API_KEY }}" >> $GITHUB_ENV - echo "USERNAME=${{ secrets.USERNAME }}" >> $GITHUB_ENV - - # Spring Boot 애플리케이션 빌드 - - name: Build with Gradle Wrapper - run: ./gradlew build - - - name: Docker image build - run: | - docker build \ - --build-arg AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} \ - --build-arg AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \ - --build-arg JWT_SECRET=${{ secrets.JWT_SECRET }} \ - --build-arg KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} \ - --build-arg KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }} \ - --build-arg MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }} \ - --build-arg MAIL_USERNAME=${{ secrets.MAIL_USERNAME }} \ - --build-arg PASSWORD=${{ secrets.PASSWORD }} \ - --build-arg URL=${{ secrets.URL }} \ - --build-arg OPEN_API_KEY=${{ secrets.OPEN_API_KEY }} \ - --build-arg USERNAME=${{ secrets.USERNAME }} \ - -t ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring \ - -f ./Dockerfile . - - - # DockerHub 로그인 - - name: Docker login - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - # Docker 이미지 푸시 - - name: Docker image push - run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring + # 코드 체크아웃 + - uses: actions/checkout@v4 + + # Java와 Gradle 설정 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + # 환경 변수 설정 + - name: Set environment variables + run: | + echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> $GITHUB_ENV + echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV + echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> $GITHUB_ENV + echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> $GITHUB_ENV + echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> $GITHUB_ENV + echo "mail.password=${{ secrets.MAIL_PASSWORD }}" >> $GITHUB_ENV + echo "mail.username=${{ secrets.MAIL_USERNAME }}" >> $GITHUB_ENV + echo "PASSWORD=${{ secrets.PASSWORD }}" >> $GITHUB_ENV + echo "URL=${{ secrets.URL }}" >> $GITHUB_ENV + echo "OPEN_API_KEY=${{ secrets.OPEN_API_KEY }}" >> $GITHUB_ENV + echo "USERNAME=${{ secrets.USERNAME }}" >> $GITHUB_ENV + # Spring Boot 어플리케이션 빌드 + - name: Build with Gradle Wrapper + run: ./gradlew build + + # Docker 이미지 빌드 + - name: Docker image build + run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring . + + # DockerHub 로그인 + - name: Docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + # Docker 이미지 푸시 + - name: Docker image push + run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring deploy: needs: build-docker-image runs-on: self-hosted steps: - # Docker 네트워크 생성 - - name: Create Docker network - run: docker network create stackpot-network || true - - # Spring 컨테이너 실행 - - name: Run Spring container - run: | - docker stop spring || true - docker rm spring || true - docker run -d --name spring --network stackpot-network \ - -p 8080:8080 \ - ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring - - # Nginx 컨테이너 실행 - - name: Run Nginx container - run: | - docker stop nginx || true - docker rm nginx || true - docker run -d \ - --name nginx --network stackpot-network \ - -p 80:80 -p 443:443 \ - -v /home/ubuntu/STACKPOT-BE/certbot/conf:/etc/letsencrypt \ - -v /home/ubuntu/STACKPOT-BE/certbot/www:/var/www/certbot \ - -v /home/ubuntu/STACKPOT-BE/nginx/conf.d:/etc/nginx/conf.d \ - nginx:1.15-alpine - - # Docker 이미지 및 컨테이너 정리 - - name: Clean up Docker system - run: docker system prune -f + # Spring 컨테이너 실행 + - name: Run Spring container + run: | + docker stop spring || true + docker rm spring || true + docker run -d --name spring --network stackpot-network \ + -p 8080:8080 \ + ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring + # Nginx 컨테이너 실행 + - name: Run Nginx container + run: | + docker stop nginx || true + docker rm nginx || true + docker run -d \ + --name nginx --network stackpot-network \ + -p 80:80 -p 443:443 \ + -v /home/ubuntu/STACKPOT-BE/certbot/conf:/etc/letsencrypt \ + -v /home/ubuntu/STACKPOT-BE/certbot/www:/var/www/certbot \ + -v /home/ubuntu/STACKPOT-BE/nginx/conf.d:/etc/nginx/conf.d \ + nginx:1.15-alpine + # Docker 이미지 및 컨테이너 정리 + - name: Clean up Docker system + run: docker system prune -f