diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 038b382..233abf6 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -12,6 +12,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + # Full history so `git rev-list --count HEAD` yields the true commit count + # driving both the app version (v1.NNN) and the org.alwisp.version label. + fetch-depth: 0 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 @@ -22,14 +26,22 @@ jobs: - name: Build and Push run: | - # gitea.repository is already "owner/repo" (e.g. jason/breedr). IMAGE="registry.alwisp.com/${{ gitea.repository }}" - docker build -t "${IMAGE}:latest" . + GIT_SHA="$(git rev-parse --short HEAD)" + BUILD_TIME="$(date -u +%Y-%m-%dT%H:%M:%SZ)" + COMMIT_COUNT="$(git rev-list --count HEAD)" + docker build \ + --build-arg GIT_SHA="${GIT_SHA}" \ + --build-arg BUILD_TIME="${BUILD_TIME}" \ + --build-arg COMMIT_COUNT="${COMMIT_COUNT}" \ + --label org.alwisp.git-sha="${{ gitea.sha }}" \ + --label org.alwisp.version="v1.$((COMMIT_COUNT-1))" \ + --label org.alwisp.repo="${{ gitea.repository }}" \ + -t "${IMAGE}:latest" . docker push "${IMAGE}:latest" - # Dangling-only prune: removes untagged leftovers from previous builds. - # Never removes the tagged :latest (kept for the Unraid deployment) or - # any image referenced by a container. + # Dangling-only prune: removes untagged leftovers from previous builds. Never + # removes the tagged :latest or any image referenced by a running container. - name: Prune dangling images on host if: always() run: docker image prune -f 2>/dev/null || true