Skip to content

Commit

Permalink
sign binaries and images with sigstore cosign
Browse files Browse the repository at this point in the history
also generate sboms for archives and packages

Signed-off-by: cpanato <[email protected]>
  • Loading branch information
cpanato committed Sep 8, 2023
1 parent 7adc136 commit 112f158
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 5 deletions.
10 changes: 6 additions & 4 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ jobs:
with:
fetch-depth: 0

- uses: sigstore/cosign-installer@v2
- uses: sigstore/cosign-installer@v3

- uses: anchore/sbom-action/[email protected]

- uses: docker/setup-qemu-action@v2
with:
Expand Down Expand Up @@ -69,7 +71,7 @@ jobs:
GOOS: ${{ matrix.GOOS }}
GOARCH: ${{ matrix.GOARCH }}
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
COSIGN_EXPERIMENTAL: true
COSIGN_YES: true
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}

- uses: actions/upload-artifact@v3
Expand All @@ -92,7 +94,7 @@ jobs:
with:
fetch-depth: 0

- uses: sigstore/cosign-installer@v2
- uses: sigstore/cosign-installer@v3

- uses: anchore/sbom-action/[email protected]

Expand Down Expand Up @@ -130,5 +132,5 @@ jobs:
args: continue --merge --timeout 2h
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COSIGN_EXPERIMENTAL: true
COSIGN_YES: true
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
24 changes: 24 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
partial:
by: target
project_name: opentelemetry-collector-releases
env:
- COSIGN_YES=true
builds:
- id: otelcol
goos:
Expand Down Expand Up @@ -374,3 +376,25 @@ docker_manifests:
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest-armv7
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest-arm64
- ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest-ppc64le
signs:
- cmd: cosign
args:
- sign-blob
- --output-signature
- ${artifact}.sig
- --output-certificate
- ${artifact}.pem
- ${artifact}
signature: ${artifact}.sig
artifacts: all
certificate: ${artifact}.pem
docker_signs:
- args:
- sign
- ${artifact}
artifacts: all
sboms:
- id: archive
artifacts: archive
- id: package
artifacts: package
49 changes: 48 additions & 1 deletion cmd/goreleaser/internal/configure.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,15 @@ func Generate(imagePrefixes []string, dists []string) config.Project {
Checksum: config.Checksum{
NameTemplate: "{{ .ProjectName }}_checksums.txt",
},

Env: []string{"COSIGN_YES=true"},
Builds: Builds(dists),
Archives: Archives(dists),
NFPMs: Packages(dists),
Dockers: DockerImages(imagePrefixes, dists),
DockerManifests: DockerManifests(imagePrefixes, dists),
Signs: Sign(),
DockerSigns: DockerSigns(),
SBOMs: SBOM(),
}
}

Expand Down Expand Up @@ -252,3 +255,47 @@ func archName(arch, armVersion string) string {
return arch
}
}

func Sign() []config.Sign {
return []config.Sign{
{
Artifacts: "all",
Signature: "${artifact}.sig",
Certificate: "${artifact}.pem",
Cmd: "cosign",
Args: []string{
"sign-blob",
"--output-signature",
"${artifact}.sig",
"--output-certificate",
"${artifact}.pem",
"${artifact}",
},
},
}
}

func DockerSigns() []config.Sign {
return []config.Sign{
{
Artifacts: "all",
Args: []string{
"sign",
"${artifact}",
},
},
}
}

func SBOM() []config.SBOM {
return []config.SBOM{
{
ID: "archive",
Artifacts: "archive",
},
{
ID: "package",
Artifacts: "package",
},
}
}

0 comments on commit 112f158

Please sign in to comment.