diff --git a/.github/workflows/validate-release.yml b/.github/workflows/validate-release.yml index 486e069ed4a..724c72caf18 100644 --- a/.github/workflows/validate-release.yml +++ b/.github/workflows/validate-release.yml @@ -39,8 +39,8 @@ jobs: statuses: none env: - CROSS_BUILDER_IMAGE: ghcr.io/gythialy/golang-cross:v1.17.6-2@sha256:c03303287982360025dda196af6006fc5d1870955115efa8990d7278d8bfb7e9 - COSIGN_IMAGE: gcr.io/projectsigstore/cosign:v1.4.1@sha256:502d5130431e45f28c51d2c24a05ef5ccd3fd916bcc91db0c8bee3a81e09a0bb + CROSS_BUILDER_IMAGE: ghcr.io/gythialy/golang-cross:v1.17.7-0@sha256:949325ffc52c16867d78412ce70f5ce531812c20e7528ae70dc9e718d72223e8 + COSIGN_IMAGE: gcr.io/projectsigstore/cosign:v1.5.1@sha256:6247b2e693b0e6a62dcfa75eb46b698c1f4cd1aca36aaefafd4bbb2f2b2af717 steps: - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 #v2.4.0 @@ -58,6 +58,7 @@ jobs: run: | docker run --rm --privileged \ -e PROJECT_ID=honk-fake-project \ + -e CI=$CI \ -e RUNTIME_IMAGE=gcr.io/distroless/static:debug-nonroot \ -v ${PWD}:/go/src/sigstore/cosign \ -v /var/run/docker.sock:/var/run/docker.sock \ diff --git a/.goreleaser.yml b/.goreleaser.yml index ef7680dbff7..ecf559f4b80 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -11,6 +11,10 @@ before: hooks: - go mod tidy - /bin/bash -c 'if [ -n "$(git --no-pager diff --exit-code go.mod go.sum)" ]; then exit 1; fi' +# if running a release we will generate the images in this step +# if running in the CI the CI env va is set and we dont run the ko steps +# this is needed because we are generating files that goreleaser was not aware to push to GH project release + - /bin/bash -c 'if [ -z "$CI" ]; then make sign-container-release && make sign-keyless-release; fi' gomod: proxy: true @@ -250,6 +254,7 @@ release: extra_files: - glob: "./release/release-cosign.pub" + - glob: "./cosign*.yaml" rigs: - rig: diff --git a/Makefile b/Makefile index e900af64dbb..b99b42ac836 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,7 @@ GOLANGCI_LINT_BIN = $(GOLANGCI_LINT_DIR)/golangci-lint KO_PREFIX ?= gcr.io/projectsigstore export KO_DOCKER_REPO=$(KO_PREFIX) +COSIGNED_YAML ?= cosign-$(GIT_TAG).yaml .PHONY: all lint test clean cosign cross all: cosign @@ -133,9 +134,9 @@ ko: # cosigned LDFLAGS="$(LDFLAGS)" GIT_HASH=$(GIT_HASH) GIT_VERSION=$(GIT_VERSION) \ - KO_DOCKER_REPO=${KO_PREFIX}/cosigned ko publish --bare \ + KO_DOCKER_REPO=${KO_PREFIX}/cosigned ko resolve --bare \ --platform=all --tags $(GIT_VERSION) --tags $(GIT_HASH) \ - github.com/sigstore/cosign/cmd/cosign/webhook + --filename config/ > $(COSIGNED_YAML) # sget LDFLAGS="$(LDFLAGS)" GIT_HASH=$(GIT_HASH) GIT_VERSION=$(GIT_VERSION) \ diff --git a/release/cloudbuild.yaml b/release/cloudbuild.yaml index 450e8b63331..f3c0dc376dc 100644 --- a/release/cloudbuild.yaml +++ b/release/cloudbuild.yaml @@ -39,10 +39,10 @@ steps: - TUF_ROOT=/tmp args: - 'verify' - - 'ghcr.io/gythialy/golang-cross:v1.17.6-2@sha256:c03303287982360025dda196af6006fc5d1870955115efa8990d7278d8bfb7e9' + - 'ghcr.io/gythialy/golang-cross:v1.17.7-0@sha256:949325ffc52c16867d78412ce70f5ce531812c20e7528ae70dc9e718d72223e8' # maybe we can build our own image and use that to be more in a safe side -- name: ghcr.io/gythialy/golang-cross:v1.17.6-2@sha256:c03303287982360025dda196af6006fc5d1870955115efa8990d7278d8bfb7e9 +- name: ghcr.io/gythialy/golang-cross:v1.17.7-0@sha256:949325ffc52c16867d78412ce70f5ce531812c20e7528ae70dc9e718d72223e8 entrypoint: /bin/sh dir: "go/src/sigstore/cosign" env: @@ -56,36 +56,14 @@ steps: - GIT_TAG=${_GIT_TAG} - GOOGLE_SERVICE_ACCOUNT_NAME=keyless@${PROJECT_ID}.iam.gserviceaccount.com - COSIGN_EXPERIMENTAL=true + - KO_PREFIX=gcr.io/${PROJECT_ID} secretEnv: - GITHUB_TOKEN args: - '-c' - | - make release - -- name: ghcr.io/gythialy/golang-cross:v1.17.6-2@sha256:c03303287982360025dda196af6006fc5d1870955115efa8990d7278d8bfb7e9 - entrypoint: 'bash' - dir: "go/src/sigstore/cosign" - env: - - "GOPATH=/workspace/go" - - "GOBIN=/workspace/bin" - - PROJECT_ID=${PROJECT_ID} - - KEY_LOCATION=${_KEY_LOCATION} - - KEY_RING=${_KEY_RING} - - KEY_NAME=${_KEY_NAME} - - KEY_VERSION=${_KEY_VERSION} - - GIT_TAG=${_GIT_TAG} - - KO_PREFIX=gcr.io/${PROJECT_ID} - - COSIGN_EXPERIMENTAL=true - - GOOGLE_SERVICE_ACCOUNT_NAME=keyless@${PROJECT_ID}.iam.gserviceaccount.com - secretEnv: - - GITHUB_TOKEN - args: - - '-c' - - | - gcloud auth configure-docker \ - && make sign-container-release \ - && make sign-keyless-release + gcloud auth configure-docker \ + && make release availableSecrets: secretManager: @@ -98,6 +76,7 @@ artifacts: paths: - "go/src/sigstore/cosign/dist/*" - "go/src/sigstore/cosign/release/release-cosign.pub" + - "go/src/sigstore/cosign/cosign*.yaml" options: machineType: E2_HIGHCPU_8 diff --git a/release/release.mk b/release/release.mk index 776452d759c..65ae323403e 100644 --- a/release/release.mk +++ b/release/release.mk @@ -5,7 +5,7 @@ # used when releasing together with GCP CloudBuild .PHONY: release release: - LDFLAGS="$(LDFLAGS)" goreleaser release + LDFLAGS="$(LDFLAGS)" goreleaser release --timeout 120m ########################### # sign with GCP KMS section @@ -48,4 +48,4 @@ sign-keyless-release: sign-keyless-cosign-release sign-keyless-cosigned-release # used when need to validate the goreleaser .PHONY: snapshot snapshot: - LDFLAGS="$(LDFLAGS)" goreleaser release --skip-sign --skip-publish --snapshot --rm-dist + LDFLAGS="$(LDFLAGS)" goreleaser release --skip-sign --skip-publish --snapshot --rm-dist --timeout 60m