이전 포스팅에서 watch_tower를 통해 docker 컨테이너 자동 업데이트 기능을 활성화 하였다
따라서 도커 허브에 이미지만 잘 업로드 한다면 자동으로 업데이트를 진행할 수 있다
name: Build and Push Docker Image
on:
push:
branches:
- "*"
jobs:
build-and-push:
name: Build Image and
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Permissions for Gradle wrapper
run: chmod +x gradlew
- name: Get the version
run: echo "VERSION=$(./gradlew properties -q | grep '^version:' | awk '{print $2}')" >> $GITHUB_ENV
- name: Build with Gradle BootBuildImage
run: ./gradlew clean bootBuildImage --imageName=${{ vars.REGISTRY_USERNAME}}/project_name:${{ env.VERSION }}
- name: Git branch name
id: git-branch-name
uses: EthanSK/git-branch-name-action@v1
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Push to GitHub Container Registry
run: |
docker push ${{ vars.REGISTRY_USERNAME }}/project_name:${{ env.VERSION }}
여기서 중요한 키워드는 도커 이미지에 태그를 붙이는 것이다
아마 스프링을 빌드해보면 0.0.1-SNAPSHOT 같은 버전을 자주보게 될텐데,