Merge pull request #42 from Leafly-app/refact/#34 #49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI with Gradle | |
| on: | |
| pull_request: | |
| branches: ["main"] # 특정 브랜치에 PR 이벤트 발생 시(열림/수정/리오픈 등) CI 실행 | |
| push: | |
| branches: ["main"] # 특정 브랜치로 직접 push될 때도 CI 실행 | |
| workflow_dispatch: # Actions 탭에서 수동 실행 버튼 제공(필요할 때 수동으로 돌릴 수 있게) | |
| # 같은 브랜치에서 중복 실행되면 이전 빌드 취소(리소스 절약/레이스 방지) | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # 코드 읽기 권한 | |
| # 전역 환경변수 | |
| env: | |
| JAVA_VERSION: '21' # 사용할 JDK 버전(프로젝트에 맞게 조정) | |
| IMAGE: ${{ secrets.DOCKER_USERNAME }}/leafly # Docker Hub 이미지명(소문자 필수) | |
| jobs: | |
| build: # 1) 빌드 전용 Job — PR과 push 모두 실행 | |
| name: Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Temurin JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: ${{ env.JAVA_VERSION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew # gradlew 실행 권한 부여(권한 문제 예방) | |
| - name: Build JAR | |
| run: ./gradlew bootJar -x test --no-daemon # 테스트 건너뛰고 배포용 JAR 빌드 | |
| - name: Upload JAR artifact | |
| uses: actions/upload-artifact@v4 # 아티팩트로 업로드 | |
| with: | |
| name: app-jar | |
| path: build/libs/*.jar | |
| docker-push: # 2) Docker 이미지 빌드/푸시 Job — PR에서는 실행 X | |
| name: Docker Build & Push | |
| # 조건: PR 이벤트가 아니고 && 대상 브랜치가 main일 때만 이미지 푸시 | |
| if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' | |
| needs: build # 빌드 Job 성공 후에만 실행 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download JAR artifact # build에서 맏느 아티팩트 다운로드 | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: app-jar | |
| path: build/libs | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 # Docker Hub 로그인 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build & Push image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . # 현재 디렉토리를 빌드 컨텍스트로 사용 | |
| push: true # 빌드한 이미지를 Docker Hub에 푸시 | |
| tags: | | |
| ${{ env.IMAGE }}:latest | |
| ${{ env.IMAGE }}:${{ github.sha }} |