Running cf push Sub-Step Commands (Beta)

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.

  1. Create your app with the cf CLI:

    cf v3-create-app MY-APP
    
  2. From your app directory, create a package for your app.

    cf v3-create-package MY-APP
    
  3. 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
    

  4. Stage the package you created:

    cf v3-stage MY-APP --package-guid PACKAGE-GUID
    
  5. 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
    

  6. Assign the droplet to your app:

    cf v3-set-droplet MY-APP -d DROPLET-GUID
    
  7. 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.

  1. List the droplets for your app:

    cf v3-droplets MY-APP
    
  2. 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

  3. Stop your app:

    cf v3-stop MY-APP
    
  4. Set the app to use the previous droplet:

    cf v3-set-droplet MY-APP -d PREVIOUS-DROPLET-GUID
    
  5. Start your app:

    cf v3-start MY-APP