-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
255 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
name: Publish image | ||
|
||
description: Publishes a docker image, SBOM, scans vulns, and signs the image. | ||
|
||
inputs: | ||
makefile-target: | ||
required: true | ||
description: makefile target to invoke for publishing image with ko | ||
registry: | ||
required: true | ||
description: registry to publish image to | ||
registry-username: | ||
required: true | ||
description: registry credentials username | ||
registry-password: | ||
required: true | ||
description: registry credentials password | ||
repository: | ||
required: true | ||
description: repository to publish image to | ||
version: | ||
required: true | ||
description: published image version | ||
sign-image: | ||
required: true | ||
description: sign image | ||
sbom-name: | ||
required: true | ||
description: name of the cyclonedx sbom | ||
sbom-repository: | ||
required: true | ||
description: sbom repository | ||
signature-repository: | ||
required: true | ||
description: signature repository | ||
main-path: | ||
required: true | ||
description: path to main go entry point | ||
|
||
outputs: | ||
digest: | ||
value: ${{ steps.digest.outputs.digest }} | ||
description: published image digest | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- shell: bash | ||
id: ko-publish | ||
env: | ||
REGISTRY: ${{ inputs.registry }} | ||
REPO: ${{ inputs.repository }} | ||
REGISTRY_USERNAME: ${{ inputs.registry-username }} | ||
REGISTRY_PASSWORD: ${{ inputs.registry-password }} | ||
COSIGN_REPOSITORY: ${{ inputs.sbom-repository }} | ||
run: | | ||
set -e | ||
echo "digest=$(VERSION=${{ inputs.version }} make ${{ inputs.makefile-target }})" >> $GITHUB_OUTPUT | ||
- uses: CycloneDX/gh-gomod-generate-sbom@d4aee0cf5133055dbd98899978246c10c18c440f # v1.1.0 | ||
with: | ||
version: v1 | ||
args: app -licenses -json -output ${{ inputs.sbom-name }}-bom.cdx.json -main ${{ inputs.main-path }} | ||
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 | ||
with: | ||
name: ${{ inputs.sbom-name }}-bom-cdx | ||
path: ${{ inputs.sbom-name }}-bom.cdx.json | ||
- shell: bash | ||
if: ${{ inputs.sign-image == 'true' }} | ||
env: | ||
COSIGN_REPOSITORY: ${{ inputs.signature-repository }} | ||
run: | | ||
set -e | ||
cosign sign --yes \ | ||
-a "repo=${{ github.repository }}" \ | ||
-a "workflow=${{ github.workflow }}" \ | ||
-a "ref=${{ github.sha }}" \ | ||
${{ steps.ko-publish.outputs.digest }} | ||
- shell: bash | ||
env: | ||
COSIGN_REPOSITORY: ${{ inputs.sbom-repository }} | ||
run: | | ||
cosign attach sbom --sbom ./${{ inputs.sbom-name }}-bom.cdx.json --type cyclonedx ${{ steps.ko-publish.outputs.digest }} | ||
- shell: bash | ||
id: digest | ||
run: | | ||
echo "The image generated is: ${{ steps.ko-publish.outputs.digest }}" | ||
DIGEST=$(echo ${{ steps.ko-publish.outputs.digest }} | cut -d '@' -f2) | ||
echo "Digest from image is: $DIGEST" | ||
echo "digest=$DIGEST" >> $GITHUB_OUTPUT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
name: Setup build env | ||
|
||
description: Clone repo, unshallow, setup go, cache and install tools. | ||
|
||
inputs: | ||
unshallow: | ||
description: git unshallow | ||
default: 'true' | ||
free-disk-space: | ||
description: free disk space | ||
default: 'true' | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- uses: jlumbroso/free-disk-space@76866dbe54312617f00798d1762df7f43def6e5c # v1.2.0 | ||
if: ${{ inputs.free-disk-space == 'true' }} | ||
with: | ||
tool-cache: true | ||
android: true | ||
dotnet: true | ||
haskell: true | ||
large-packages: false | ||
swap-storage: false | ||
- shell: bash | ||
if: ${{ inputs.unshallow == 'true' }} | ||
run: | | ||
git fetch --prune --unshallow | ||
- uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0 | ||
with: | ||
go-version: ~1.21.3 | ||
- shell: bash | ||
run: | | ||
go mod download | ||
- shell: bash | ||
run: | | ||
GOCACHE=~/.cache/kyverno/tools make install-tools |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
name: Setup caches | ||
|
||
description: Setup caches for go modules, tools and build cache. | ||
|
||
inputs: | ||
build-cache-key: | ||
description: build cache prefix | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: ~/go/pkg/mod | ||
key: ${{ runner.os }}-go-pkg-mod-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }} | ||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: ~/.cache/kyverno/tools | ||
key: ${{ runner.os }}-cache-kyverno-tools-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }} | ||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
if: ${{ inputs.build-cache-key }} | ||
with: | ||
path: ~/.cache/go-build | ||
key: ${{ runner.os }}-build-cache-${{ inputs.build-cache-key }}-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | ||
|
||
name: Publish images | ||
|
||
permissions: {} | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'main' | ||
- 'release*' | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
publish-images: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
packages: write | ||
id-token: write | ||
outputs: | ||
reports-server-digest: ${{ steps.publish-reports-server.outputs.digest }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
- name: Setup caches | ||
uses: ./.github/actions/setup-caches | ||
timeout-minutes: 5 | ||
continue-on-error: true | ||
with: | ||
build-cache-key: publish-images | ||
- name: Setup build env | ||
uses: ./.github/actions/setup-build-env | ||
timeout-minutes: 30 | ||
- name: Run Trivy vulnerability scanner in repo mode | ||
uses: aquasecurity/trivy-action@d43c1f16c00cfd3978dde6c07f4bbcf9eb6993ca # v0.16.1 | ||
with: | ||
scan-type: 'fs' | ||
ignore-unfixed: true | ||
format: 'sarif' | ||
output: 'trivy-results.sarif' | ||
severity: 'CRITICAL,HIGH' | ||
- name: Install Cosign | ||
uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0 | ||
- name: Publish reports server | ||
id: publish-reports-server | ||
uses: ./.github/actions/publish-image | ||
with: | ||
makefile-target: ko-publish-reports-server | ||
registry: ghcr.io | ||
registry-username: ${{ github.actor }} | ||
registry-password: ${{ secrets.GITHUB_TOKEN }} | ||
repository: reports-server | ||
version: ${{ github.ref_name }} | ||
sign-image: true | ||
sbom-name: reports-server | ||
sbom-repository: ghcr.io/${{ github.repository_owner }}/reports-server/sbom | ||
signature-repository: ghcr.io/${{ github.repository_owner }}/reports-server/signatures | ||
main-path: . | ||
generate-reports-server-provenance: | ||
needs: publish-images | ||
permissions: | ||
id-token: write # To sign the provenance. | ||
packages: write # To upload assets to release. | ||
actions: read # To read the workflow path. | ||
# NOTE: The container generator workflow is not officially released as GA. | ||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1.9.0 | ||
with: | ||
image: ghcr.io/${{ github.repository_owner }}/reports-server | ||
digest: "${{ needs.publish-images.outputs.reports-server-digest }}" | ||
registry-username: ${{ github.actor }} | ||
secrets: | ||
registry-password: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters