name: Build and publish Docker images on: workflow_dispatch: schedule: - cron: "0 0 * * 1" push: branches: - main tags: - "*.*.*" paths-ignore: - "test/*" - ".gitignore" - "docker-compose-separate-containers.yml" - "docker-compose.yml" - "LICENSE" - "Makefile" - "*.md" jobs: multiarch-build: name: Build and publish image strategy: matrix: base: [alpine, debian] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Retrieve nginx-proxy version id: nginx-proxy_version run: echo "VERSION=$(git describe --tags)" >> "$GITHUB_OUTPUT" - name: Retrieve docker-gen version id: docker-gen_version run: sed -n -e 's;^FROM nginxproxy/docker-gen:\([0-9.]*\).*;VERSION=\1;p' Dockerfile.${{ matrix.base }} >> "$GITHUB_OUTPUT" - name: Get Docker tags id: docker_meta uses: docker/metadata-action@v5 with: images: | ghcr.io/nginx-proxy/nginx-proxy nginxproxy/nginx-proxy jwilder/nginx-proxy tags: | type=semver,pattern={{version}},enable=${{ matrix.base == 'debian' }} type=semver,pattern={{major}}.{{minor}},enable=${{ matrix.base == 'debian' }} type=semver,suffix=-alpine,pattern={{version}},enable=${{ matrix.base == 'alpine' }} type=semver,suffix=-alpine,pattern={{major}}.{{minor}},enable=${{ matrix.base == 'alpine' }} type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.base == 'debian' }} type=raw,value=alpine,enable=${{ github.ref == 'refs/heads/main' && matrix.base == 'alpine' }} labels: | org.opencontainers.image.authors=Nicolas Duchon (@buchdag), Jason Wilder org.opencontainers.image.version=${{ steps.nginx-proxy_version.outputs.VERSION }} flavor: | latest=false - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push the image id: docker_build uses: docker/build-push-action@v6 with: context: . file: Dockerfile.${{ matrix.base }} build-args: | NGINX_PROXY_VERSION=${{ steps.nginx-proxy_version.outputs.VERSION }} DOCKER_GEN_VERSION=${{ steps.docker-gen_version.outputs.VERSION }} platforms: linux/amd64,linux/arm64,linux/s390x,linux/arm/v7 sbom: true push: true provenance: mode=max tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - name: Images digests run: echo ${{ steps.docker_build.outputs.digest }}