From 636084c606344ec6e78c8eefbeeeda115aa76cd6 Mon Sep 17 00:00:00 2001 From: Adam Ross Date: Fri, 15 Mar 2024 14:53:08 -0700 Subject: [PATCH] ci: new jobs image publishing configuration (#85) --- testing/README.md | 12 ++----- testing/jobs.merge.cloudbuild.yaml | 6 ++++ testing/jobs.publish.cloudbuild.yaml | 47 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 testing/jobs.publish.cloudbuild.yaml diff --git a/testing/README.md b/testing/README.md index 17407b3..2909404 100644 --- a/testing/README.md +++ b/testing/README.md @@ -4,7 +4,7 @@ A Google Cloud Project is required in order to run the tests in the Cloud Run Sa * Cloud Run * Cloud Build -* Container Registry +* Artifact Registry ## Test Project Setup @@ -20,13 +20,13 @@ A Google Cloud Project is required in order to run the tests in the Cloud Run Sa Each sample has Cloud Build triggers: * A **Pull Request trigger** which checks incoming changes. -* A **Merge trigger** which builds and pushes new container images. +* A **Publish trigger** which builds and pushes new container images. * A **Nightly trigger** which checks the affects of product changes, environment changes, and flakiness. The trigger configs are defined in `testing/triggers` and can be imported via: ```sh -gcloud beta builds triggers import --source=testing/triggers/jobs..yaml +gcloud builds triggers import --source=testing/triggers/jobs..yaml ``` ## Manually Start Cloud Builds @@ -38,9 +38,3 @@ gcloud builds submit \ --config "testing/$SAMPLE.pr.cloudbuild.yaml" \ --substitutions "SHORT_SHA=manual" ``` - -## Manually Provide Pack CLI Cloud Builders - -Follow [instructions][pack] for creating your own Cloud Builder with the `pack` CLI. - -[pack]: https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/pack \ No newline at end of file diff --git a/testing/jobs.merge.cloudbuild.yaml b/testing/jobs.merge.cloudbuild.yaml index 7904847..9601e33 100644 --- a/testing/jobs.merge.cloudbuild.yaml +++ b/testing/jobs.merge.cloudbuild.yaml @@ -12,6 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. + +# +# This configuration is deprecated by job/publish.cloudbuild.yaml. +# It is retained for cutover purposes and will be deleted. +# + steps: - id: 'Build Container Image' diff --git a/testing/jobs.publish.cloudbuild.yaml b/testing/jobs.publish.cloudbuild.yaml new file mode 100644 index 0000000..dd192e9 --- /dev/null +++ b/testing/jobs.publish.cloudbuild.yaml @@ -0,0 +1,47 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Publishes the hello-job sample image to Artifact Registry. +steps: + +# Build the image once. +- id: 'Build Container Image' + name: 'gcr.io/k8s-skaffold/pack:latest' + dir: 'job/' + script: | + pack build --builder "gcr.io/buildpacks/builder:google-22" "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE}:latest" + +# Support commonly used variants of the image tag. +- id: 'Tag Container Image Aliases' + name: 'gcr.io/cloud-builders/docker:latest' + script: | + docker tag "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE}:latest" "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE_ALIAS}:latest" + docker tag "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE}:latest" "gcr.io/${PROJECT_ID}/${_IMAGE_ALIAS}:latest" + +images: + # Push image with Cloud Build context. + - "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE}:latest" + - "${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${_REPO}/${_IMAGE_ALIAS}:latest" + - "gcr.io/${PROJECT_ID}/${_IMAGE_ALIAS}:latest" + +substitutions: + _IMAGE: hello-job + _IMAGE_ALIAS: job + _LOCATION: us + _REPO: container + +options: + # Automatically make substitutions available as environment variables to scripts. + # https://cloud.google.com/build/docs/configuring-builds/substitute-variable-values#mapping_substitutions_to_environment_variables + automapSubstitutions: true