Skip to content

cloudbuild-contract

Cloud Build dependencies and execution fields must have valid, safe semantics.

Why

Forward or duplicate dependencies invalidate a build; substitution into shell source changes executable syntax.

Fix

Order uniquely identified steps before their consumers and pass substituted values through env or direct argv.

Examples

Before — flagged An aliased shell program reports substitution at each executable use
build.yaml
substitutions: { _VALUE: fixture-data }
steps:
- name: builder
entrypoint: bash
args: &args [-c, "printf %s $_VALUE"]
- name: builder
entrypoint: bash
args: *args
After — preferred Aliased external-script arguments retain substitution as argv data
build.yaml
substitutions: { _VALUE: fixture-data }
steps:
- name: builder
entrypoint: bash
args: &args [scripts/check.sh, "$_VALUE"]
- name: builder
entrypoint: bash
args: *args
Before — flagged A build cannot depend on a later step
build.yaml
steps:
- name: builder
waitFor: [later]
- name: builder
id: later
After — preferred Dependencies precede their consumers
build.yaml
steps:
- name: builder
id: first
- name: builder
waitFor: [first]

Files

**/*.yaml**/*.yml

References