]> git.gsnw.org Git - fping.git/commitdiff
ci: Github action Build and Push Docker Image develop
authorGerman Service Network <support@gsnw.de>
Tue, 9 Sep 2025 09:54:33 +0000 (11:54 +0200)
committerSebastian <176771227+gsnw-sebast@users.noreply.github.com>
Wed, 10 Sep 2025 13:09:59 +0000 (15:09 +0200)
.github/workflows/docker-deployment.yml [new file with mode: 0644]

diff --git a/.github/workflows/docker-deployment.yml b/.github/workflows/docker-deployment.yml
new file mode 100644 (file)
index 0000000..da22d72
--- /dev/null
@@ -0,0 +1,65 @@
+name: Build and Push Docker Image
+on:
+  workflow_run:
+    workflows: ["Test"]
+    types:
+      - completed
+permissions:
+  contents: read
+  packages: write
+  id-token: write    # Cosign OIDC-Signing
+  actions: write     # Upload Artifacts
+  attestations: write # build-provenance
+env:
+  REGISTRY: ghcr.io
+jobs:
+  push_to_regsitry:
+    if: >
+      github.event.workflow_run.conclusion == 'success' &&
+      github.event.workflow_run.event == 'push'
+    name: Push Docker image to Github Container Redistry
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Login Github Container Redistry
+        uses: docker/login-action@v3
+        with:
+          registry: ${{ env.REGISTRY }}
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Extract metadata (tags, labels)
+        id: meta
+        uses: docker/metadata-action@v5
+        with:
+          images: ${{ env.REGISTRY }}/${{ github.repository }}
+          tags: |
+            type=raw,value=latest
+
+      - name: Build and push Docker image
+        id: build
+        uses: docker/build-push-action@v6
+        with:
+          file: contrib/Dockerfile
+          context: .
+          push: true
+          provenance: false
+          sbom: false
+          tags: ${{ steps.meta.outputs.tags }}
+          labels: ${{ steps.meta.outputs.labels }}
+          target: ""
+
+      - name: Install cosign
+        uses: sigstore/cosign-installer@v3
+
+      - name: Sign image with Cosign
+        run: cosign sign --yes ${{ env.REGISTRY }}/${{ github.repository }}@${{ steps.build.outputs.digest }}
+
+      - name: Generate artifact attestation
+        uses: actions/attest-build-provenance@v1
+        with:
+          subject-name: ${{ env.REGISTRY }}/${{ github.repository }}
+          subject-digest: ${{ steps.build.outputs.digest }}
+          push-to-registry: true
\ No newline at end of file