Releases: cloudfoundry/cli
v6.35.2
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
Binaries
Change Log
Fixed regressions
- Corrected issue so
service,services, andshare-servicecommands 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
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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-pushno longer accepted (previous release mergedv2-pushintopush)- 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
servicesto enable an upcoming featureservice(see above)logoutto 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
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
Binaries
Change Log
Fixed regressions
- Refactored
pushresulted 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
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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
pushinitially 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.pushnow allows environment variables with ${...} in them in a manifest file. (#682)pushnow preserves relative symlinks in app files. This makes it easier to work with Node.js apps usingnpm link, but note that it now errors when it detects a symlink pointing outside the app folder (e.g. anode_modulesfolder containing external symlinks). (#903)pushhas a clarified error message when the route is not in the same space as the app. (#977)- The pattern format for the
.cfignoreexclusion file had not been well defined. To address this,pushuses an external library that is compatible withgit's rules for.gitignore. Folders containing only a .gitignore file are now included. (#993) pushcreates 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)pushbreaks up the API call to check the Cloud Controller cache for existing app files in batches to reduce the chance of timeouts. (#1123)pushresolves an issue when no value is specified for services in the app manifest. (#1142)pushresolves 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)pushno longer adds new routes when updating an app and using--random-route. (#1177)pushresolves an issue with the generated random hostname for an app pushed with a non-ASCII app name. (#1214)pushhas 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.
pushno longer supports "promoted" (global) attributes. You can use YAML anchors instead.pushno longer supports app manifest inheritance. One of the alternatives we're considering implementing is value substitution, similar to BOSH/Concourse.
pushno longer supports app manifest route declarations using any ofhost,hosts,domain,domainsorno-hostnameattributes. You can userouteattributes instead.
- App manifest deprecations effective immediately (no grace period):
pushno 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 userandom-route: truein the app manifest.
- Other deprecations:
pushdoes not accept conflicting flag combinations such ascf v2-push myapp --no-route --random-route.
Updated commands
install-pluginnow displays a warning on its help page about plugins from untrusted authors.install-pluginnow displays the correct version of an existing plugin when installing a different version. (#946 (comment))
v6.33.1
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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
servicedisplayed more than just the guid when using the--guidflag, breaking scripts that read the value. (#1271) - Refactored
logsstopped 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
logsnow works over a SOCKS5 proxy. (cloudfoundry/noaa#38)feature-flagsnow retries the API request on a 502 error response. (#1230)feature-flagsandrestart-app-instancenow have shorter, cleared command descriptions.v3-set-envnow accepts values for environment variables that start with a dash. (#1277)v2-pushnow searches for a manifest file when a folder is specified to the-fflag, and fails with a friendly error message when it cannot find one.v2-pushnow allows specifying a path to the-pflag starting with\on Windows, to indicate the root of the current drive.
v6.33.0
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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
v2-pushcreates many fewer temporary files during the package creation and upload process. This reduced push time from 21 minutes to 4 minutes in one casev2-pushinitially 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.v2-pushbreaks up the API call to check the Cloud Controller cache for existing app files in batches to reduce the chance of timeouts. (#1123)- The pattern format for the
.cfignoreexclusion file had not been well defined. To address this,v2-pushuses an external library that is compatible withgit's rules for.gitignore.
(#1006) v2-pushdoes 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.v2-pushdoes not accept conflicting flag combinations such ascf 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-startflag to suppress staging and starting of the app -pflag to v3-create-package to specify a path to an app directory or zip file.cfignoresupport 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-usernow returns a friendlier error message when run with insufficient permissions. (#1238)delete-usernow no longer includes a confusing suggestion to usecf curlto delete a user that has multiple UAA origins. (#1097)set-org-role,set-space-role,unset-org-roleandunset-space-rolenow fail with an error when the specified user has multiple UAA origins and theset_roles_by_usernameresp.unset_roles_by_usernamefeature flags are disabled (same message as fordelete-userabove)pushhas removed some questionable words from the dictionaries it uses to generate random HTTP routes (#1261)
v6.32.0
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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-pushfor 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.cfignorefile.
After pushing an app with this command, please usemap-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, orv3-pushis used to push an app that fails to stage, it is not returned by the "old"appscommand.
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
v6.31.0
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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
pushnow acceptsdockerattributes in the app manifest to push a Docker app. (#696)create-app-manifestnow includes thedockerattributes when generating an app manifest for a Docker app.appnow displays the image name of a Docker app.
v6.30.0
Package Manager Installation
Installers
- Debian 64 bit / 32 bit (deb)
- Redhat 64 bit / 32 bit (rpm)
- Mac OS X 64 bit (pkg)
- Windows 64 bit / 32 bit (zip)
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.