Releases: cloudfoundry/cli
v6.36.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
Bug Fix for bind-service
Fix for bind-service, whereby when a user attempts to bind a service to an app, an error message would be thrown stating --name
requires a specific CF API version. This patch release fixes the issue. #1359
Clarified the error message when you try to push an app to a space that already has that app name and route in a different space.
Release contributors: An Yu, Sebastian Vidrio, Anande Gaitonde, Thomas Viehman, Abby Chau
v6.36.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
Droplet Upload
Now you can push
an app without staging it. The push
command now has an optional --droplet
flag that allows you to specify a path to a tgz file with a pre-staged app. This allows you to have more granular control over which droplet is being used. For example, you can put the exact version of the app from staging on production and get the results you expect.
Name Service Bindings
We've updated the bind-service
command by adding an optional --binding-name
flag that allows you to assign a name to that binding. This feature provides app developers control and context on the app-service binding when they may not have control over other related names, such as the app or service instance. Thanks to the CAPI team for providing this feature through PR #1309. We've also updated the service
command so you can view binding names, if any, for a specific service.
Upgraded cf CLI to Golang 1.10.1
The cf CLI now uses Go version 1.10.1. We expect this update will resolve recent SSL issues.
Use DisableKeepAlives when closing Network connections
The cf CLI previously used just the Connection: close
header when making certain API calls to the Cloud Controller and UAA. Now, DisableKeepAlives
is set to true on the client side, to aid with closing connections with these requests. This should alleviate some networking issues with certain load balancers.
Bug Fixes
- int64 support for cf/flags library, #1333
- Debian package, #1336
- Web action flag not working on CLI 0.6.5, #1337
- When a
cf push
upload fails/Consul is down, a panic occurs, #1340 and #1351
Note: Colors in the terminal will auto-detect a TTY session - which is the default color if Color_Enabled
is not set in the config or $CF_COLOR
is empty.
Plugin Updates
- Create Service Push v1.0.1 release, #214
- Add Copy-Autoscaler 0.0.1, #216
- Update CF Local to v0.19.0, #218
- Update the Java plugin to version 2.0.0, #219
Release contributors: An Yu, Sebastian Vidrio, Anande Gaitonde, Thomas Viehman, Jay Badenhope, Abby Chau
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-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
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-push
no longer accepted (previous release mergedv2-push
intopush
)- 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 featureservice
(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
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
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
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
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 usingnpm link
, but note that it now errors when it detects a symlink pointing outside the app folder (e.g. anode_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 withgit
'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 "promoted" (global) attributes. You can use YAML anchors instead.push
no longer supports app manifest inheritance. One of the alternatives we're considering implementing is value substitution, similar to BOSH/Concourse.
push
no longer supports app manifest route declarations using any ofhost
,hosts
,domain
,domains
orno-hostname
attributes. You can useroute
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 userandom-route: true
in the app manifest.
- Other deprecations:
push
does not accept conflicting flag combinations such ascf 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
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
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
andrestart-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
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-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 casev2-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.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)- 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 withgit
's rules for.gitignore
.
(#1006) 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.v2-push
does 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-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 usecf curl
to delete a user that has multiple UAA origins. (#1097)set-org-role
,set-space-role
,unset-org-role
andunset-space-role
now fail with an error when the specified user has multiple UAA origins and theset_roles_by_username
resp.unset_roles_by_username
feature flags are disabled (same message as fordelete-user
above)push
has 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-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 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-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