Manage tool versions

Cloud Deploy performs its operations using a custom image, which includes default tool versions. Cloud Deploy provides you with flexibility and control over your deployment process by allowing you to specify tool versions to use in operations to render, deploy, and verify your manifests.

This page describes how Cloud Deploy tool versions are selected and the maintenance and support time for each tool version.

Supported Cloud Deploy Tool Versions

Cloud Deploy lets you select the versions for the following tools:

Cloud Deploy provides a repository of available tool versions that you can use for your operations. All of these versions are subject to the maintenance and deprecation policy.

Fixed Tool Versioning

All tool versions are saved onto the release resource by default. The tool versions are associated with a release at release creation and are used for the entire lifecycle of that release, and cannot be changed during that lifetime. The release lifecycle consists of all render, deploy, and other jobs on that release. This includes up to deployment into the final target in the progression, and beyond (rollbacks or redeployments). You can find the tool versions associated with a release by running the following command:

gcloud deploy releases describe RELEASE_NAME \
       --delivery-pipeline=PIPELINE_NAME \
       --project=PROJECT \
       --region=REGION \
       --format='yaml(toolVersions)'

Releases created before the tool versioning feature won't have toolVersions listed in their output. Instead you can see their Skaffold version with the --format 'yaml(skaffoldVersion)' flag.

Disable fixed tool versioning

If you want to disable fixed tool versioning and use the latest tools for a given release, you can do so by specifying the special keyword latest for each tool. Here's an example of creating a release that uses the latest versions for all tools:

gcloud deploy releases create RELEASE_NAME \
       --delivery-pipeline=PIPELINE_NAME \
       --project=PROJECT \
       --region=REGION \
       --docker-version=latest \
       --helm-version=latest \
       --kpt-version=latest \
       --kubectl-version=latest \
       --kustomize-version=latest \
       --skaffold-version=latest

How to specify a particular tool version to use

You can use any of the supported tool versions. To specify the version that you want to use, include the appropriate flag for specific tool:

gcloud deploy releases create RELEASE_NAME \
       --delivery-pipeline=PIPELINE_NAME \
       --project=PROJECT \
       --region=REGION \
       --docker-version=DOCKER_VERSION \
       --helm-version=HELM_VERSION \
       --kpt-version=KPT_VERSION \
       --kubectl-version=KUBECTL_VERSION \
       --kustomize-version=KUSTOMIZE_VERSION \
       --skaffold-version=SKAFFOLD_VERSION

For any tools where you want to use the default version, you can omit the corresponding version flag.

For example, the following command uses Skaffold 2.16.1 and Helm 3.18.3:

gcloud deploy releases create release-001 \
                              --delivery-pipeline=PIPELINE_NAME \
                              --skaffold-version=2.16.1 \
                              --helm-version=3.18.3 \
                              --project=PROJECT \
                              --region=REGION

Tool version compatibility

Cloud Deploy takes responsibility for ensuring that the tool versions are compatible on the Cloud Deploy image. If you use the tool version replacement feature to replace tool versions on the Cloud Deploy image, then you're responsible for choosing compatible tool versions.

Tool version deprecation and maintenance policy

Tool versions are supported for 12 months with a 60-day maintenance period, from the day they are imported. This maintenance period means that releases tied to a tool version are still supported for 60 days after support for that tool version has expired. You can still create rollouts from those releases, but you can't create releases using a tool version that's in the maintenance period.

After the 60-day maintenance period, the tool version is no longer supported for any operations. You can no longer create rollouts from a release that uses the unsupported version. However, all data associated with the release remains.

You can view the maintenance and expiration dates on the release by running the following command:

gcloud deploy releases describe RELEASE_NAME \
       --delivery-pipeline=PIPELINE_NAME \
       --project=PROJECT \
       --region=REGION \
       --format 'yaml(condition)'

You can also view the maintenance and expiration date of a specific tool by running the command:

gcloud artifacts versions list \
       --package TOOL_NAME \
       --repository tools \
       --project cd-image-prod \
       --location=REGION

The maintenance and expiration dates are available as annotations on the respective versions.