name: build #event trigger : main 브랜치에 push 이벤트 발생시 jobs가 실행된다. on: push: branches: [ "main" ] #권한 설정 permissions: contents: read #jobs 정의 jobs: #build job - jdk 설정, gradle 설정, docker 배포 build: #ubuntu 최신 버전 runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # JDK 17 설정 - name: Set up JDK 21 uses: actions/setup-java@v3 # build를 위해서 jdk를 설치해줘야 하기 때문에 첫 단계로 설정하다. with: java-version: '21' distribution: 'oracle' # Gradle 설정 - gradle이 제공하는 action으로 build하는데 도움을 준다. - name: Setup Gradle uses: gradle/gradle-build-action@v2 # gradlew 파일 권한 지정 - 기본적으로 gradlew에 대한 권한 설정이 되어있지 않기 때문에 권한 설정을 해준다. - name: Grant execute permission for gradlew run: chmod +x gradlew # gradle bootBuildImage를 이용해 이미지를 만들고 원격 저장소에 Push # env에 민감 정보(환경변수)를 추가한다. - name: Build Image with Gradle and Push to DockerHub run: ./gradlew bootBuildImage env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}