Exporting a Cloud Build Pipeline
In this tutorial, you will pull an example package that declares Kubernetes resources and two kpt functions. Then you will export a pipeline that runs the functions against the resources on Cloud Build. This tutorial takes about 5 minutes.
A kpt version v0.32.0
or higher is required.
Before you begin
Unfamiliar with Cloud Build? Here is Cloud Build Quickstarts.
On your local machine, create an empty directory:
mkdir function-export-example
cd function-export-example
All commands must be run at the root of this directory.
Use kpt pkg get
to fetch source files of this tutorial:
# Fetch source files
kpt pkg get https://github.com/GoogleContainerTools/kpt/package-examples/function-export example-package
Then you will get an example-package
directory:
resources/resources.yaml
: declares aDeployment
and aNamespace
.resources/constraints/
: declares constraints used by thegatekeeper-validate
function.functions.yaml
: runs two functions declaratively:gatekeeper-validate
enforces constraints over all resources.label-namespace
adds a label to all Namespaces.
Exporting a pipeline
kpt fn export example-package --workflow cloud-build --output cloudbuild.yaml
Running this command will generate a cloudbuild.yaml
like this:
steps:
- name: gcr.io/kpt-dev/kpt:latest
args:
- fn
- run
- exmaple-package
Integrating with your existing pipeline
Now you can manually copy and paste the generated content into your existing build config file.
If you do not have one yet, you can simply put the file in the root of your project. It is fully functional.
If you want to see the diff after running kpt functions, append a kpt pkg diff
step to make your cloudbuild.yaml
look like this:
steps:
- name: gcr.io/kpt-dev/kpt:latest
args:
- fn
- run
- example-package
- name: gcr.io/kpt-dev/kpt:latest
args:
- pkg
- diff
- example-package
- --diff-tool
- git
- --diff-tool-opts
- "--no-pager diff"
Viewing the result on Cloud Build
Running this command will trigger a build:
gcloud builds submit .
Then you can view the result on Build History.
Next step
Try to remove the owner: alice
line in example-package/resources/resources.yaml
.
Submit again, then view how the pipeline fails on Cloud Build.