Running cf push Sub-Step Commands (Beta)
Page last updated:
This topic describes how to run beta Cloud Foundry Command Line Interface (cf CLI) commands that provide granular control over the cf push
process. These commands break down the cf push
process into sub-steps that can run independently.
Note: This is a beta feature. Because the CLI may change, this feature is not recommended for use in scripts until it is generally available.
Overview
The cf CLI includes commands to provide granular control over app pushes. With these commands, you can choose to perform only some steps of the cf push
process or perform specific actions between the steps normally executed as part of running cf push
.
Here are some example use cases for the sub-step commands:
- Updating a third party system before staging an app
- Retrying failed stagings without incurring downtime
- Calling external services to report audit data during push
- Scanning a droplet before deploy
- Integrating with a change request system
To support these custom push workflows, Cloud Foundry divides apps into smaller building blocks. The following table describes these building blocks as Resources and lists the command associated with each one.
For information on using these commands, see the Example Workflows section below.
Resource | Description | Command |
---|---|---|
App | The top-level resource that represents an app and its configuration. For more information, see Apps. |
v3-create-app |
Package | The source code that makes up an app. For more information, see Packages. |
v3-create-package |
Build | The staging process. Creating a build combines a Package with a Buildpack and builds it into an executable resource. For more information, see Builds. |
v3-stage |
Droplet | An executable resource that results from a Build. For more information, see Droplet. |
v3-set-droplet |
Example Workflows
The following sections describe example workflows for working with the cf push
sub-step commands.
Push an App Using Sub-Step Commands
This example workflow describes how to push an app using sub-step commands instead of cf push
.
Create your app with the cf CLI:
cf v3-create-app MY-APP
From your app directory, create a package for your app.
cf v3-create-package MY-APP
Locate and copy the
package guid
from the output of the previous step. See the following example output:Uploading and creating bits package for app MY-APP in org test / space test as admin... package guid: 0dfca85a-8ed4-4f00-90d0-3ab08852dba8 OK
Stage the package you created:
cf v3-stage MY-APP --package-guid PACKAGE-GUID
Locate and copy the
droplet guid
from the output of the previous step. See the following example output:Staging package for MY-APP in org test / space test as admin... ... Package staged droplet guid: f60d3464-415a-4202-9d40-26a70373a487 state: staged created: Mon 25 Sep 16:37:45 PDT 2018
Assign the droplet to your app:
cf v3-set-droplet MY-APP -d DROPLET-GUID
Start your app:
cf v3-start MY-APP
Roll Back to a Previous Droplet
This example workflow describes how to roll back to a previous droplet used by your app. You may want to use this, for example, if you update your app and it has a bug that causes it to crash.
List the droplets for your app:
cf v3-droplets MY-APP
From the output, locate and copy the second-to-last GUID. In the following example, this is
66524145-5502-40e6-b782-47fe68e13c49
.Listing droplets of app MY-APP in org test / space test as admin...
guid state created 66524145-5502-40e6-b782-47fe68e13c49 staged Mon 25 Sep 16:37:34 PDT 2018 0677ad93-9f77-4aaa-9a6b-44da022dcd58 staged Mon 25 Sep 16:44:55 PDT 2018
Stop your app:
cf v3-stop MY-APP
Set the app to use the previous droplet:
cf v3-set-droplet MY-APP -d PREVIOUS-DROPLET-GUID
Start your app:
cf v3-start MY-APP