build: External labels

build: External labels
This commit is contained in:
Kroese 2023-11-29 03:20:50 +01:00 committed by GitHub
commit 7d27baa163
2 changed files with 40 additions and 48 deletions

View file

@ -26,35 +26,18 @@ jobs:
needs: shellcheck needs: shellcheck
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
actions: write
packages: write packages: write
contents: read contents: read
steps: steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- -
name: Prepare Docker build name: Set up Docker Buildx
id: prepare uses: docker/setup-buildx-action@v3
run: |
PLATFORMS="linux/amd64,linux/arm64"
VERSION="${{ vars.MAJOR }}.${{ vars.MINOR }}"
TAGS=()
TAGS=("${{ secrets.DOCKERHUB_REPO }}:latest")
TAGS+=("${{ secrets.DOCKERHUB_REPO }}:${VERSION}")
TAGS+=("ghcr.io/${{ github.repository }}:latest")
TAGS+=("ghcr.io/${{ github.repository }}:${VERSION}")
echo "tags=${TAGS[@]}" >> $GITHUB_OUTPUT
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "docker_platforms=${PLATFORMS}" >> $GITHUB_OUTPUT
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
- -
name: Login into Docker Hub name: Login into Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v3
@ -70,34 +53,51 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- -
name: Build Docker image name: Build Docker image
id: build
run: | run: |
TAGS=(${{ steps.prepare.outputs.tags }}) 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)
DESC=$(grep --only-matching --perl-regex "(?<=image.description\=).*" $DIRECTORY/Dockerfile)
echo "Build date: ${{ steps.prepare.outputs.build_date }}" TAGS=()
echo "Docker platform: ${{ steps.prepare.outputs.docker_platforms }}" TAGS=("${{ secrets.DOCKERHUB_REPO }}:latest")
echo "Tags: ${{ steps.prepare.outputs.tags }}" TAGS+=("${{ secrets.DOCKERHUB_REPO }}:${VERSION}")
TAGS+=("ghcr.io/${{ github.repository }}:latest")
TAGS+=("ghcr.io/${{ github.repository }}:${VERSION}")
docker buildx build --platform ${{ steps.prepare.outputs.docker_platforms }} \ LABELS=()
--output "type=image,push=true" \ 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/${{ secrets.DOCKERHUB_REPO }}/\"")
LABELS+=("org.opencontainers.image.source=\"https://github.com/${{ github.repository }}/\"")
docker buildx build --platform ${PLATFORMS} \
--output "type=image,push=false" \
--progress=plain \ --progress=plain \
--build-arg "BUILD_ARG=${GITHUB_RUN_ID}" \ --build-arg "VERSION_ARG=${VERSION}" \
--build-arg "VERSION_ARG=${{ steps.prepare.outputs.version }}" \
--build-arg "DATE_ARG=${{ steps.prepare.outputs.build_date }}" \
--build-arg "VCS_REF=${GITHUB_SHA::8}" \ --build-arg "VCS_REF=${GITHUB_SHA::8}" \
$(printf "%s" "${TAGS[@]/#/ --tag }" ) . $(printf "%s" "${LABELS[@]/#/ --label }" ) \
- $(printf "%s" "${TAGS[@]/#/ --tag }" ) $DIRECTORY
name: Clear Docker credentials
run: |
rm -f ${HOME}/.docker/config.json rm -f ${HOME}/.docker/config.json
jdksks
- -
name: Create a release name: Create a release
uses: action-pack/github-release@v2 uses: action-pack/github-release@v2
env: env:
GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }}
with: with:
tag: "v${{ steps.prepare.outputs.version }}" tag: "v${{ steps.build.outputs.version }}"
title: "v${{ steps.prepare.outputs.version }}" title: "v${{ steps.build.outputs.version }}"
- -
name: Increment version variable name: Increment version variable
uses: action-pack/bump@v2 uses: action-pack/bump@v2

View file

@ -31,18 +31,10 @@ ENV DISK_SIZE "16G"
ENV RAM_SIZE "512M" ENV RAM_SIZE "512M"
ENV BOOT "http://www.example.com/image.iso" ENV BOOT "http://www.example.com/image.iso"
ARG DATE_ARG=""
ARG BUILD_ARG=0
ARG VERSION_ARG="0.0" ARG VERSION_ARG="0.0"
ENV VERSION=$VERSION_ARG ENV VERSION=$VERSION_ARG
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.title="QEMU for Docker" LABEL org.opencontainers.image.title="QEMU for Docker"
LABEL org.opencontainers.image.created=${DATE_ARG}
LABEL org.opencontainers.image.revision=${BUILD_ARG}
LABEL org.opencontainers.image.version=${VERSION_ARG}
LABEL org.opencontainers.image.url="https://hub.docker.com/r/qemux/qemu-docker/"
LABEL org.opencontainers.image.source="https://github.com/qemu-tools/qemu-docker/"
LABEL org.opencontainers.image.description="QEMU in a docker container using KVM acceleration" LABEL org.opencontainers.image.description="QEMU in a docker container using KVM acceleration"
ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"] ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"]