The main goal of Cloud Foundry CLI (cf CLI) v7 and CAPI V3 is to unlock new app developer workflows for users who require granular control of their apps and other advanced deployment strategies. For more information, see New Workflows Supported below. These workflows were previously limited by CAPI V2.
The cf CLI development team aims to provide:
A seamless upgrade experience from cf CLI v6. Changes have been kept to a minimum. Where there are changes, the team has incorporated feedback from the community to simplify the cf CLI user experience.
Details about breaking potential breaking changes and alternative workflows for scripting environments.
To understand the differences between specific commands, see Command Differences below.
For more information about CAPI V3, see the CAPI V3 documentation. For more information about CAPI V2, see the CAPI V2 documentation.
cf CLI v7 uses CAPI V3, which offers developers more granular control over their apps. It enables new workflows by exposing packages, droplets, builds, and processes. CAPI V3 also includes new resources such as sidecars, manifests, deployments.
Some key new features available through the cf CLI v7 are:
Rolling App Deployments: Push updates to apps without incurring downtime.
Running cf push Sub-Step Commands: Exercise granular control over the cf push process. These commands break down the cf push process into sub-steps that can run independently.
Pushing an App with Multiple Processes: Use a single command to push apps that run multiple processes. One example is a web app that has a UI process and a worker process.
Pushing Apps with Sidecar Processes: Run additional processes in the same container as your app.
Using Metadata: Add metadata to objects such as spaces and apps. This can help with operating, monitoring, and auditing.
To install cf CLI v7, see the README in the Cloud Foundry CLI repository on GitHub. It includes instructions for downloading the latest CAPI release candidate, which is what the cf CLI v7 beta is tested against.
The cf CLI v7 requires cf-deployment v13.5.0 or later.
This version of cf-deployment contains CAPI release v1.95.0, which provides the CAPI V3 API v3.85.0.
For more information, see the CAPI release notes and the Cloud Controller release notes on GitHub.
If you target an older version of cf-deployment, cf CLI v7 presents a warning saying that the API version is less than the minimum supported. Not all commands run correctly. For example, cf apps
does not work.
These sections describe changes in commands from cf CLI v6 to cf CLI v7. They also provide important information for those who use the cf CLI in scripts.
For information about possible breaking changes, see the Table of Differences below. This table includes removed flag options, removed commands, and removed or changed argument requirements.
If you have scripts that rely on the cf CLI, this section describes possible changes in cf CLI v7 which might affect scripts.
Some of these changes are:
In cf CLI v7, if your scripts parse error text, output text errors are returned directly from CAPI. Where possible, cf CLI v7 no longer wraps errors it receives from the API.
cf CLI v7 commands output errors and warnings to stderr
rather than stdout
to simplify debugging.
Style changes including flavor text updates. For more information, see Colors in CF CLI Style Guide in the Cloud Foundry CLI repository on GitHub.
Key-value and table column headers are displayed in lowercase.
Single-quote resource names appear in error cases.
Caution If the services attribute is declared at the top-level of the manifest.yml file, cf CLI v6 generates a warning, but in cf CLI v7, there is no warning and the app is still pushed.
cf CLI v7 attempts to consistently apply the principles of idempotency across all commands which require it. For more information, see General Principles in CF CLI Style Guide in the Cloud Foundry CLI repository on GitHub. Commands now exit 0
if the outcome a user expresses when running a specific command is unchanged after the command is executed. Examples include:
Attempting to delete a resource which does not exist, such as a space. Commands such as delete-route
and delete-space
return 0
in those cases.
If the create-buildpack
command fails to create a buildpack, the command exits with 1
instead of 0
, which is the current cf CLI v6 behavior.
The table below summarizes how commands differ between cf CLI v7 and cf CLI v6.
Command | Changes |
---|---|
cf add-network-policy |
|
cf apps |
|
cf bind-security-group |
|
cf check-route |
|
cf create-buildpack |
|
cf create-domain |
|
cf create-org |
|
cf create-quota |
|
cf create-space |
|
cf create-route |
|
cf create-service-auth-token |
This command is removed. |
cf create-service-broker |
|
cf create-user |
|
cf delete |
|
cf delete-domain |
|
cf delete-org |
|
cf delete-quota |
|
cf delete-service-auth-token |
This command is removed. |
cf domains |
|
cf files |
This command is removed. |
cf map-route |
|
cf marketplace |
|
cf migrate-service-instances |
This command is removed. |
cf packages |
|
cf push |
|
cf purge-service-offering |
|
cf quota |
|
cf quotas |
|
cf remove-network-policy |
|
cf rename-buildpack |
This command is removed. Instead, use --rename flag with cf update-buildpack . |
cf restart-app-instance |
|
cf routes |
|
cf run-task |
|
cf scale |
|
cf service-access |
|
cf service-auth-tokens |
This command is removed. |
cf set-health-check |
|
cf set-quota |
|
cf set-running-environment-variable-group |
|
cf set-staging-environment-variable-group |
|
cf ssh |
|
cf start |
|
cf unshare-private-domain |
|
cf update-buildpack |
|
cf update-quota |
|
cf update-service-auth-token |
This command is removed. |
cf v3-COMMAND |
|
cf apply-manifest |
|
cf v3-cancel-zdt-push |
|
cf v3-zdt-push |
|
cf buildpacks |
|