Procházet zdrojové kódy

ci: build/publish on demand workflow

Nicolas Duchon před 6 měsíci
rodič
revize
e96a3ddec2
1 změnil soubory, kde provedl 87 přidání a 0 odebrání
  1. 87 0
      .github/workflows/build-publish-dispatch.yml

+ 87 - 0
.github/workflows/build-publish-dispatch.yml

@@ -0,0 +1,87 @@
+name: Build and publish Docker images on demand
+
+on:
+  workflow_dispatch:
+    inputs:
+      image_tag:
+        description: "Image tag"
+        type: string
+        required: true
+
+jobs:
+  multiarch-build:
+    name: Build and publish ${{ matrix.base }} image with tag ${{ inputs.image_tag }}
+    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=raw,value=${{ inputs.image_tag }},enable=${{ matrix.base == 'debian' }}
+            type=raw,value=${{ inputs.image_tag }},suffix=-alpine,enable=${{ matrix.base == 'alpine' }}
+          labels: |
+            org.opencontainers.image.authors=Nicolas Duchon <nicolas.duchon@gmail.com> (@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 }}