Skip to content

Releases: cloudfoundry/cli

v6.35.2

16 Mar 22:52

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Bug Fix

  • Providing a clearer services authorization warning message when a service has been disabled for the organization, fixing #1344

v6.35.1

14 Mar 23:23

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Fixed regressions

  • Corrected issue so service, services, and share-service commands no longer fail with a JSON unmarshal error for certain service broker configurations

Other fixes

  • Changed all warnings, including experimental warnings for v3 commands, so they now output to STDERR to make debugging easier

v6.35.0

09 Mar 19:26

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Dropping support for older Cloud Controller API versions

In order to focus our resources on the most valuable features and bug fixes, the CF CLI team periodically announces the end of support for older Cloud Controller (CC) API versions. The current CF CLI is backwards compatible to CF 251 / CC API Release 1.15 / APIs 2.69.0 and 3.4.0, from January 2017.

Service Instance Sharing

This cf CLI release includes two new commands, share-service and unshare-service, to enable you to share service instances between spaces in the same or different orgs. Additional details here. We welcome your feedback on the new implementation.

To help you track where a service instance is shared to or from, we refactored and updated the service command.

Service Account Authentication (Client Credentials)

It is now possible to authenticate with only a client ID and a secret using the auth command with a new --client-credentials flag. Before this release, users could only log in as a user (i.e. username & password with either default client id, or custom client id & secret). That meant "fake" users needed to be prepared for CI environments and scripts ("tiles" self-registration).

push Fixes and Enhancements

  • v2-push no longer accepted (previous release merged v2-push into push)
  • Makes explicit that the default route is defined as the route initially used to create the app, if no routes exists. Previously, when you push an existing app by providing a hostname, a second route would be created. Now given an app with a single route, if you attempt to provide a hostname on a subsequent push, the hostname will be ignored. #1321

Other Fixes and Enhancements

  • Fixed problem where wildcards weren't allowed in routes section of app manifest, deployment #399

Plugin Updates

Going forward, we ask that every plugin name matches its command name so it can be installed and uninstalled with the same name.

  • Updated Event Alerts Plugin to 0.0.1, #198, then removed that plugin, #211
  • Updated top Plugin to 0.9.3, #210
  • Updated service-use to 1.2.2 with matching command and plugin names #213

Built with Golang 1.10

Golang 1.10 was released last month. It addresses security vulnerabilities and other bugs.
See the Golang release summaries for details on the bug fixes.

Refactored commands

  • services to enable an upcoming feature
  • service (see above)
  • logout to enable clearing of client credentials for Service Account Authentication (see above); will now also show user name during logout for consistency with other commands

Release contributors: An Yu, Nick Wei, Sebastian Vidrio, Anande Gaitonde, Jay Badenhope, and special guest Kevin Middleton

v6.34.1

18 Jan 00:05

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Fixed regressions

  • Refactored push resulted in incorrectly use of .cfignore (#1300)
  • CF Push strips double dashes on route name in version 6.34.0 (#1307)

Updated command

  • For push --random-route, replaced "sugar-glider" with "panda" and "tasmanian-devil" with "toucan" in list of nouns

v6.34.0

10 Jan 01:47

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

New push implementation

In this cf CLI release, the v2-push that was exposed in cf CLI 6.33.0 has become the default push. It addresses a number of issues, adds improvements to performance and stability of the push process, and deprecates some app manifest features. This release will make push easier to maintain and enhance in the future.

push Fixes and Enhancements

  • push initially compares the "current" state with the "desired" state and displays this in a diff-like format to give a quick understanding of the updates it is going to make.
  • push now allows environment variables with ${...} in them in a manifest file. (#682)
  • push now preserves relative symlinks in app files. This makes it easier to work with Node.js apps using npm link, but note that it now errors when it detects a symlink pointing outside the app folder (e.g. a node_modules folder containing external symlinks). (#903)
  • push has a clarified error message when the route is not in the same space as the app. (#977)
  • The pattern format for the .cfignore exclusion file had not been well defined. To address this, push uses an external library that is compatible with git's rules for .gitignore. Folders containing only a .gitignore file are now included. (#993)
  • push creates many fewer temporary files during the package creation and upload process. This reduced push time from 21 minutes to 4 minutes in one case. (#1006)
  • push breaks up the API call to check the Cloud Controller cache for existing app files in batches to reduce the chance of timeouts. (#1123)
  • push resolves an issue when no value is specified for services in the app manifest. (#1142)
  • push resolves issues with platform-specific case sensitivity and locking of file and directory names by processing app bits in memory instead of writing them to disk. (#1147 and #1223)
  • push no longer adds new routes when updating an app and using --random-route. (#1177)
  • push resolves an issue with the generated random hostname for an app pushed with a non-ASCII app name. (#1214)
  • push has a new, smaller dictionary to generate random HTTP routes in order to avoid the use of questionable words. (Also resolves #1283)

Deprecations

  • App manifest deprecations getting a grace period:
    • For at least the next six months, when you use these features, the "old" push implementation is invoked and a deprecation message will be displayed. In this case, the fixes and enhancements of the "new" push (listed above) will not be invoked.
    • See blog post regarding app manifest changes on https://www.cloudfoundry.org/blog/coming-changes-app-manifest-simplification/ for more details. Please review your app manifests to see if they use the deprecated features.
    • push no longer supports app manifest route declarations using any of host, hosts, domain, domains or no-hostname attributes. You can use route attributes instead.
  • App manifest deprecations effective immediately (no grace period):
    • push no longer processes ${random-word} in the app manifest. We recently discovered this undocumented feature. If the intent was to create a random hostname, you can use random-route: true in the app manifest.
  • Other deprecations:
    • push does not accept conflicting flag combinations such as cf v2-push myapp --no-route --random-route.

Updated commands

  • install-plugin now displays a warning on its help page about plugins from untrusted authors.
  • install-plugin now displays the correct version of an existing plugin when installing a different version. (#946 (comment))

v6.33.1

15 Dec 03:03

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Relative symbolic links in apps

The v2-push command now preserves relative symlinks in app files. This makes it easier to work with Node.js apps using npm link. (#903)

Fixed regressions

  • Refactored service displayed more than just the guid when using the --guid flag, breaking scripts that read the value. (#1271)
  • Refactored logs stopped ordering streamed logs. We believe this issue was introduced during the refactor in cf CLI 6.26.0. (#1273)

Refactored commands

We are in the process of creating a more consistent user experience. Our goal is to standardize UI output.
For example, warnings and errors will consistently be outputted to stderr instead of stdout, and English table and key-value headers will be displayed in lowercase.
As we iterate through the list of commands, we are also focusing on improving performance and stability.
Please review your scripts if they depend on the output of these commands.

List of improved commands in this release:

  • create-route (was mistakenly listed in release notes of cf CLI 6.32.0)
  • feature-flags

Updated commands

  • logs now works over a SOCKS5 proxy. (cloudfoundry/noaa#38)
  • feature-flags now retries the API request on a 502 error response. (#1230)
  • feature-flags and restart-app-instance now have shorter, cleared command descriptions.
  • v3-set-env now accepts values for environment variables that start with a dash. (#1277)
  • v2-push now searches for a manifest file when a folder is specified to the -f flag, and fails with a friendly error message when it cannot find one.
  • v2-push now allows specifying a path to the -p flag starting with \ on Windows, to indicate the root of the current drive.

v6.33.0

20 Nov 23:51

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Refactored push

This cf CLI release exposes a refactored version of the push command, which includes a number of improvements to performance and stability of the push process, and make it easier to maintain and enhance in the future.

The new implementation of the command is initially introduced alongside the "old" push command to give cf CLI users an opportunity to try it out and report back any issues: Although we believe v2-push to have feature-parity, our codebase had been lacking sufficient integration tests around this command to be sure nothing was missed.

We plan to replace "old" push with this implementation in a subsequent release soon.

Notes

  1. v2-push creates many fewer temporary files during the package creation and upload process. This reduced push time from 21 minutes to 4 minutes in one case
  2. v2-push initially compares the "current" state with the "desired" state and displays this in a diff-like format to give a quick understanding of the updates it is going to make.
  3. v2-push breaks up the API call to check the Cloud Controller cache for existing app files in batches to reduce the chance of timeouts. (#1123)
  4. The pattern format for the .cfignore exclusion file had not been well defined. To address this, v2-push uses an external library that is compatible with git's rules for .gitignore.
    (#1006)
  5. v2-push does not implement "promoted" (global) attributes and app manifest inheritance.
    When you push with an app manifest using these features, the "old" push implementation is invoked and a message will be displayed that explains it is doing so. Same for app manifest route declarations using any of "host", "hosts", "domain", "domains" or "no-hostname" attributes.
  6. v2-push does not accept conflicting flag combinations such as cf v2-push myapp --no-route --random-route.

We welcome your feedback on the new implementation.

V3 app commands

This cf CLI release exposes app related features offered by the CC V3 APIs that were marked GA on 4 Aug 2017. This release adds:

  • v3-ssh
  • v3-push now supports the --no-start flag to suppress staging and starting of the app
  • -p flag to v3-create-package to specify a path to an app directory or zip file
  • .cfignore support to v3-push and v3-create-package
  • an experimental warning to all "v3" commands at the start of execution (it was displayed for only a few of them)

SOCKS5 proxy support

The cf CLI now uses your SOCKS5 proxy when specified in the https_proxy environment variable.
In fact, this works since cf CLI release 6.31.0, as it relies on support added in Golang 1.9. (#1047)

$ https_proxy=socks5://localhost:1080 cf login

Documentation added here.

Note that it does not work for the ssh and logs commands for now as they use TCP connection APIs that do not read this environment variable.

Built with Golang 1.9.2

Golang 1.9.1 and 1.9.2 were released last month. They address security vulnerabilities and other bugs.
See the Golang release summaries for details on the bug fixes.

Refactored commands

We are in the process of creating a more consistent user experience; our goal is to standardize UI output.
For example, warnings and errors will consistently be outputted to stderr instead of stdout and English table and key-value headers displayed in lowercase.
As we iterate through the list of commands, we are also focusing on improving performance and stability.
Please review your scripts if they depend on the output of these commands.

List of improved commands in this release:

  • bind-service (was mistakenly listed in previous release's notes)
  • service

Plugin development

Windows plugin binaries can be signed with the author's digital certificate to assure recipients that they do indeed come from you.

Although an optional step, unsigned binaries can often not be used in locked-down machines common in organizations with stricter security policies. Signing the binary allows system admins to whitelist the plugin by signature or publisher.

Documentation has been improved on how to about signing your plugin binary. See here.

Updated commands

  • create-user now returns a friendlier error message when run with insufficient permissions. (#1238)
  • delete-user now no longer includes a confusing suggestion to use cf curl to delete a user that has multiple UAA origins. (#1097)
  • set-org-role, set-space-role, unset-org-role and unset-space-role now fail with an error when the specified user has multiple UAA origins and the set_roles_by_username resp. unset_roles_by_username feature flags are disabled (same message as for delete-user above)
  • push has removed some questionable words from the dictionaries it uses to generate random HTTP routes (#1261)

v6.32.0

27 Sep 00:35

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

V3 app commands

This cf CLI release exposes app related features offered by the CC V3 APIs that were marked GA on 4 Aug 2017.
Features include the deployment and management of apps with multiple processes (defined in a Procfile), staging apps with multiple buildpacks, and uploading and staging multiple versions of a single app to enable a near-zero downtime app update experience.
Refer to the full list of commands here and details on how to configure multiple buildpacks here.

The new features are introduced using new commands starting with a "v3-" suffix.

  • Some commands are mostly equivalent to existing app related commands but call the V3 APIs or expose new flags to unlock additional features.
  • Other commands are new and expose the primitives of apps, such as operations on an app's packages and droplets.

We welcome your feedback on the new features, the user experience and the new workflows you may adopt.
Based on that, we will look at making commonly used v3 commands the default in a future release, with a migration plan for users targeting CF endpoints that do not support the GA'ed V3 APIs yet.

Please treat the "v3" commands as experimental - no guarantees are made about their availability or compatibility in subsequent cf CLI releases.

New commands

diesk@cloud-cf:~/workspace$ ./cf v3-<tab><tab>
v3-app                   v3-get-health-check      v3-set-env
v3-apps                  v3-packages              v3-set-health-check
v3-create-app            v3-push                  v3-stage
v3-create-package        v3-restart               v3-start
v3-delete                v3-restart-app-instance  v3-stop
v3-droplets              v3-scale                 v3-unset-env
v3-env                   v3-set-droplet

Notes on new commands

Take into consideration:

  • v3-push for now supports only a subset of features of "old" push. In particular, it does not support app manifests yet, nor any flags to set the stack or modify the default mapped route, nor applies exclusions from a .cfignore file.
    After pushing an app with this command, please use map-route, bind-service, v3-set-env, v3-scale, v3-set-health-check, etc. to update its configuration.
  • For some app related commands (ssh, bind-service, etc.) there is no "v3" version yet.
    Please use the "old" command for now.
  • Although "v3" and "old" commands can be used together, some combinations may give unexpected results.
    For example, if "v3" commands are used to create an app with a package but it is not staged, or v3-push is used to push an app that fails to stage, it is not returned by the "old" apps command.

SSL_CERT_FILE/SSL_CERT_PATH for self-signed API server certificate

Because Golang 1.9 added support for the environment variables SSL_CERT_FILE and SSL_CERT_PATH on Unix systems, it is now possible to use these when targeting a CF API endpoint that uses a self-signed certficate.
This is particularly useful in a CI environment without root access, where the existing method of registering the certificate in the local truststore is not possible. (#1084)

Note that this is supported since the previous cf CLI release (6.31.0).

Refactored commands

We are in the process of creating a more consistent user experience; our goal is to standardize UI output.
For example, warnings and errors will consistently be outputted to stderr instead of stdout and English table and key-value headers displayed in lowercase.
As we iterate through the list of commands, we are also focusing on improving performance and stability.
Please review your scripts if they depend on the output of these commands.

List of improved commands in this release:

  • create-route
  • orgs
  • spaces

Updated commands

  • spaces now displays an error when the authentication tokens have expired. (#1051)
  • spaces now displays an error when receiving an unexpected response from the API endpoint. (#1136)

v6.31.0

15 Sep 23:37

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

App manifest support for Docker apps

This cf CLI release introduces new attributes to the app manifest to support pushing of Docker apps.
Private Docker repositories are also supported, using the non-interactive workflow introduced for push in cf CLI 6.26.0 with the CF_DOCKER_PASSWORD environment variable.

$ cat ./manifest.yml
---
applications:
  name: dockerapp
  docker:
    image: internal-registry.example.com:5000/my-repo/my-image:v2
    username: alice

$ CF_DOCKER_PASSWORD=$(pass docker/image) cf push
Using manifest file ./manifest.yml

Creating app dockerapp in org myorg / space dev as alice...
...

Refer to the Deploying with App Manifests documentation for details.

The private Docker repo feature requires a target CF release of v260 (CC API v2.82.0) onwards.

Built with Golang 1.9.0

Golang 1.9.0 was released last month.
See the Golang announcement for details.

Refactored commands

We are in the process of creating a more consistent user experience; our goal is to standardize UI output.
For example, warnings and errors will consistently be outputted to stderr instead of stdout and English table and key-value headers displayed in lowercase.
As we iterate through the list of commands, we are also focusing on improving performance and stability.
Please review your scripts if they depend on the output of these commands.

List of improved commands in this release:

  • create-app-manifest

Updated commands

  • push now accepts docker attributes in the app manifest to push a Docker app. (#696)
  • create-app-manifest now includes the docker attributes when generating an app manifest for a Docker app.
  • app now displays the image name of a Docker app.

v6.30.0

01 Sep 21:36

Choose a tag to compare

Package Manager Installation

Installers

Binaries

Change Log

Container networking commands

This cf CLI release exposes the Container Networking feature of allowing direct network traffic between apps, bypassing the router. This enables apps to be connected to by other apps without being routable from the Internet.

This functionality has been available with the network-policy CLI plugin and is now part of the cf CLI with the following commands:

   cf add-network-policy SOURCE_APP --destination-app DESTINATION_APP [(--protocol (tcp | udp) --port RANGE)]
   cf network-policies [--source SOURCE_APP]
   cf remove-network-policy SOURCE_APP --destination-app DESTINATION_APP --protocol (tcp | udp) --port RANGE

The new commands require Network Policy API V1, which was introduced in cf-deployment v0.21.0 and as an optional deploy in CF release v271 (CC API v3.29.0) or higher.
Refer to the documentation for details.