GiitHub Actions를 사용하여 Spring Boot 응용 프로그램을 Docker Build로 Push

./gradlew build에서 구축한 결과docker/build-push-action에서 잘 사용되지 않기 때문에 촌스럽게 써 보았다.v*.*.* 이런 라벨이 푸시되면 이동하고latest*.*.*의 태그가 Docker Hub로 푸시된다.
캐시 주위는 잠시 생략합니다.docker/metadata-action랑도 같이 조합해서 쓰고 싶은데...
더 똑똑한 방법이 있다면 기쁠 텐데.
.github/workflows/docker-image.yml
name: Docker Image CI

on:
  push:
    tags:
      - 'v*'

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Docker Login
      uses: docker/login-action@v1
      with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Gradle Build
      run: ./gradlew build

    - name: Prepare build tag
      id: tag
      run: |
        VERSION=`echo ${GITHUB_REF#refs/tags/} | grep -o '[0-9]*\..*'`
        IMAGE=${{ secrets.DOCKER_HUB_USERNAME }}/リポジトリ名
        TAGS=`echo ${IMAGE}:latest --tag ${IMAGE}:${VERSION}`
        echo ::set-output name=TAGS::${TAGS}

    - name: Build and push
      run: >-
        docker buildx build
        --build-arg JAR_FILE=build/libs/\*.jar
        --file ./Dockerfile
        --platform linux/amd64,linux/arm64
        --tag ${{ steps.tag.outputs.TAGS }}
        --push .
Dockerfile
FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

좋은 웹페이지 즐겨찾기