diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbb5f99..119502f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,6 +35,20 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - + name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + context: git + images: | + ${{ secrets.DOCKERHUB_REPO }} + ghcr.io/${{ github.repository }} + tags: | + type=raw,value=latest,priority=100 + type=raw,value=${{ vars.MAJOR }}.${{ vars.MINOR }} + labels: | + org.opencontainers.image.title=${{ vars.NAME }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -51,54 +65,28 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - + - name: Build Docker image - id: build - run: | - #!/bin/bash - - DIRECTORY="." - PLATFORMS="linux/amd64,linux/arm64" - VERSION="${{ vars.MAJOR }}.${{ vars.MINOR }}" - echo "version=${VERSION}" >> $GITHUB_OUTPUT - BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" - TITLE="$(grep --only-matching --perl-regex "(?<=image.title\=).*" $DIRECTORY/Dockerfile | sed -e 's/ /\xc2\xa0/g')" - DESC="$(grep --only-matching --perl-regex "(?<=image.description\=).*" $DIRECTORY/Dockerfile | sed -e 's/ /\xc2\xa0/g')" - - TAGS=() - TAGS=("${{ github.repository }}:latest") - TAGS+=("${{ github.repository }}:${VERSION}") - TAGS+=("ghcr.io/${{ github.repository }}:latest") - TAGS+=("ghcr.io/${{ github.repository }}:${VERSION}") - - LABELS=() - LABELS=("org.opencontainers.image.licenses=MIT") - LABELS+=("org.opencontainers.image.title=${TITLE}") - LABELS+=("org.opencontainers.image.description=${DESC}") - LABELS+=("org.opencontainers.image.version=${VERSION}") - LABELS+=("org.opencontainers.image.created=${BUILD_DATE}") - LABELS+=("org.opencontainers.image.revision=${GITHUB_RUN_ID}") - LABELS+=("org.opencontainers.image.url=https://hub.docker.com/r/${{ github.repository }}") - LABELS+=("org.opencontainers.image.source=https://github.com/${{ github.repository }}") - - docker buildx build --progress=plain \ - --platform "${PLATFORMS}" \ - --output "type=image,push=true" \ - --build-arg "VERSION_ARG=${VERSION}" \ - --build-arg "VCS_REF=${GITHUB_SHA::8}" \ - $(printf '%s' "${LABELS[@]/#/ --label }" ) \ - $(printf '%s' "${LABELS[@]/#/ --annotation }" ) \ - $(printf '%s' "${TAGS[@]/#/ --tag }" ) "${DIRECTORY}" - - rm -f ${HOME}/.docker/config.json + uses: docker/build-push-action@v5 + with: + context: . + push: true + provenance: false + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + annotations: ${{ steps.meta.outputs.labels }} + build-args: | + VCS_REF=${GITHUB_SHA::8} + VERSION_ARG=${{ steps.meta.outputs.version }} - name: Create a release uses: action-pack/github-release@v2 env: GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} with: - tag: "v${{ steps.build.outputs.version }}" - title: "v${{ steps.build.outputs.version }}" + tag: "v${{ steps.meta.outputs.version }}" + title: "v${{ steps.meta.outputs.version }}" - name: Increment version variable uses: action-pack/bump@v2