feat(ci): sign container image
All checks were successful
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-amd64) (push) Successful in 11s
Run Golang tests / Run unit tests (stable, ubuntu-latest-amd64) (push) Successful in 6s
Lint Markdown files / Run markdown linter (push) Successful in 4s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-arm64) (push) Successful in 28s
Run Golang tests / Run unit tests (stable, ubuntu-latest-arm64) (push) Successful in 24s
Release / Release application (push) Successful in 5m56s
Release / Upload Images to docker.io (push) Successful in 1m4s

This commit is contained in:
2026-02-02 20:01:30 +01:00
parent 84047787a5
commit 4939a636f9
3 changed files with 72 additions and 2 deletions

View File

@@ -11,6 +11,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6.0.2 - uses: actions/checkout@v6.0.2
- uses: sigstore/cosign-installer@v4.0.0
with:
cosign-release: "v3.0.3" # renovate: datasource=github-tags depName=sigstore/cosign
- uses: docker/login-action@v3.7.0 - uses: docker/login-action@v3.7.0
with: with:
registry: git.cryptic.systems registry: git.cryptic.systems
@@ -28,8 +31,25 @@ jobs:
oras push git.cryptic.systems/volker.raschek/dcmerge:artifacthub.io \ oras push git.cryptic.systems/volker.raschek/dcmerge:artifacthub.io \
--config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \ --config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \
artifacthub-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml artifacthub-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml
- name: Push public cosign key to git.cryptic.systems
env:
COSIGN_PUBLIC_KEY: ${{ vars.COSIGN_PUBLIC_KEY }}
run: |
echo "${COSIGN_PUBLIC_KEY}" > cosign.pub
oras push git.cryptic.systems/volker.raschek/dcmerge:cosign.pub \
--artifact-type application/vnd.dev.cosign.public-key.v1 \
cosign.pub:application/vnd.dev.cosign.public-key.v1
- name: Push artifacthub-repo.yml to docker.io - name: Push artifacthub-repo.yml to docker.io
run: | run: |
oras push docker.io/volkerraschek/dcmerge:artifacthub.io \ oras push docker.io/volkerraschek/dcmerge:artifacthub.io \
--config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \ --config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \
artifacthub-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml artifacthub-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml
- name: Push public cosign key to docker.io
env:
COSIGN_PUBLIC_KEY: ${{ vars.COSIGN_PUBLIC_KEY }}
run: |
echo "${COSIGN_PUBLIC_KEY}" > cosign.pub
oras push docker.io/volkerraschek/dcmerge:cosign.pub \
--artifact-type application/vnd.dev.cosign.public-key.v1 \
cosign.pub:application/vnd.dev.cosign.public-key.v1

View File

@@ -31,6 +31,9 @@ jobs:
"https://github.com/anchore/syft/releases/download/v${SYFT_VERSION}/syft_${SYFT_VERSION}_${OS}_${ARCH}.deb" "https://github.com/anchore/syft/releases/download/v${SYFT_VERSION}/syft_${SYFT_VERSION}_${OS}_${ARCH}.deb"
dpkg -i syft_${SYFT_VERSION}_${OS}_${ARCH}.deb dpkg -i syft_${SYFT_VERSION}_${OS}_${ARCH}.deb
rm syft_${SYFT_VERSION}_${OS}_${ARCH}.deb rm syft_${SYFT_VERSION}_${OS}_${ARCH}.deb
- uses: sigstore/cosign-installer@v4.0.0
with:
cosign-release: "v3.0.3" # renovate: datasource=github-tags depName=sigstore/cosign
- uses: docker/setup-qemu-action@v3.7.0 - uses: docker/setup-qemu-action@v3.7.0
- uses: docker/setup-buildx-action@v3.12.0 - uses: docker/setup-buildx-action@v3.12.0
- uses: actions/setup-go@v6.2.0 - uses: actions/setup-go@v6.2.0
@@ -42,6 +45,8 @@ jobs:
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- env: - env:
COSIGN_PASSPHRASE: ${{ secrets.COSIGN_PASSPHRASE }}
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
GITEA_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} GITEA_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
GONOSUMDB: ${{ vars.GONOSUMDB }} GONOSUMDB: ${{ vars.GONOSUMDB }}
GOPROXY: ${{ vars.GOPROXY }} GOPROXY: ${{ vars.GOPROXY }}

View File

@@ -311,6 +311,51 @@ sboms:
- "--enrich=all" - "--enrich=all"
- "--output=spdx-json=$document" - "--output=spdx-json=$document"
docker_signs:
- # ID of the sign config, must be unique.
# Only relevant if you want to produce some sort of signature file.
#
# Default: 'default'.
id: container-images
# Path to the signature command.
#
# Default: 'cosign'.
cmd: cosign
# Command line arguments for the command.
#
# Default: ["sign", "--key=cosign.key", "${artifact}@${digest}", "--yes"].
# Templates: allowed.
args:
- "sign"
- "--key=env://COSIGN_PRIVATE_KEY"
- "${artifact}@${digest}"
- "--yes"
# Which artifacts to sign.
#
# all: all artifacts
# none: no signing
# images: only docker images
# manifests: only docker manifests
# '': images built by dockers_v2
#
# Default: ''.
artifacts: all
# IDs of the artifacts to sign.
ids:
- container-images
# Stdin data to be given to the signature command as stdin.
#
# Templates: allowed.
stdin: "{{ .Env.COSIGN_PASSPHRASE }}"
# StdinFile file to be given to the signature command as stdin.
# stdin_file: ./passphrase.key
gitea_urls: gitea_urls:
api: https://git.cryptic.systems/api/v1 api: https://git.cryptic.systems/api/v1
download: https://git.cryptic.systems download: https://git.cryptic.systems