You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Changed to ubuntu:latest (jammy) for resource image. This increased the container image from 104MB to 166MB, but this allows for a cleaner development environment as the devcontainer.json now uses the same resource Dockerfile while adding additional development tools using devcontainer "features".
Introduced support for cf8 cli! This is enabled by configuring cf_cli_version: 8 globally on the resource source configuration.
These commands now support the wait: true param when used with cf_cli_version: 8:
bind-route-service
bind-service
create-service-key
delete-service-key
unbind-route-service
unbind-service
Added create-private-domain command (see notes in Changed section regarding deprecation of create-domain command)
Added delete-private-domain command (see notes in Changed section regarding deprecation of delete-domain command)
restart command now supports strategy: rolling and no_wait: true params when using cf_cli_version version 7 or 8
delete-user command now supports the origin param for specifying an external identity provider when using cf_cli_version version 7 or 8
map-route command now supports the app_protocol param for specifying the protocol for the route destination (only applied to HTTP routes)
Changed
The wait_for_service: true param has been deprecated in favor of wait: true for commands: create-service, update-service, and delete-service for consistency with the new v8 cli param.
The create-domain and delete-domain commands have been deprecated in favor of the new create-private-domain and delete-private-domain commands. Backstory: The cf cli v6 provides the create/delete-domain and create/delete-shared-domain commands. Starting with cf cli v7, the create/delete-domain commands became aliases for the more descriptive create/delete-private-domain commands. Note that when using cf cli v6 we still use cf create-domain ... or cf delete-domain ... under the covers.
Improved test isolation by removing dependency on $CCR_SOURCE global variable and using new test::* methods for test authentication and commands dependent on targeting an org and space.
Fixed
Fixed an issue where setting locked: false or enabled: false on create-buildpack and update-buildpack would only work if you quoted the false boolean value (ex: enabled: "false"). This has been fixed so either style (quoted or un-quoted) will work.
Introduced Visual Studio Code Remote - Containers support for developing cf-cli-resource. The .devcontainer folder contains a Dockerfile tailored for this project with all the development tools needed to develop this resource. The goal is to provide a consistent developer experience with less dependencies on your local setup (all you need now is Docker and VS Code on your system!).
Changed
Upgraded to Alpine 3.14 for resource image
Improved cf cli version detection and error handling
Fixed
Fixed shipit pipeline job to properly publish latest image tag
push command now supports directly passing application manifest yaml to the manifest param (see updated example in README). The resource will intelligently figure out if you specified a file (original behavior) or yaml and will act accordingly.
bind-route-service command now supports the configuration param for specifying service-specific configuration parameters, thanks to a PR by BartoszKaszewczuk
Changed
Previously when doing a push command with manifest and environment_variables params, the existing manifest file would be modified in-place to include the environment variables. We now modify a copy of the original manifest and leave the original alone. This is all internal to the cf-cli-resource and should not affect any existing pipelines!
Introduced new tests (see spec folder) using the shellspec BDD testing framework. The existing home-grown test framework in the itest folder has served this project well, but it's time to move on to something better. Over the upcoming releases, we'll slowly start converting more of the itest tests to the newer spec tests.
unbind-route-service - Unbind a service instance from an HTTP route, thanks to a PR by JHjava
Changed
push command now supports specifying multiple buildpacks, thanks to a PR by tenjaa. The original buildpack option is now deprecated and superceded by buildpacks.
Resource and test executions are now isolated from each other thanks to setting their own unique CF_HOME locations.
Introduced experimental support for cf7 cli! This is enabled by configuring cf_cli_version: 7 globally on the resource source configuration.
Fixed
The environment_variables handling introduced for the push command introduced in v2.18.1 wasn't properly placing the env node at the application level (it was placing it at the deprecated global level) with only one application in the manifest but no app_name declared. This has been corrected and the test case updated to properly check for this condition.
Changed
Major changes to zero-downtime-push command!!! The command has been refactored to no longer depend on the deprecated autopilot plugin and now provides a "hand crafted" zero downtime push experience and supports vars and vars_files arguments, thanks to a PR by shyamz-22. It also now supports docker_image, show_app_log on failed pushes, the no_start flag, and staging_timeout and startup_timeout params. The zero-downtime-push integration tests have also received a major overhaul to ensure a seamless transition.
push command now supports the show_app_log option to output app logs after a failed push (use with app_name option)
bind-route-service command now supports the path option (used in combination with hostname and domain to specify the route to bind), thanks to a PR by shyamz-22!
We use Alpine Linux as the base image for cf-cli-resource when it runs inside of Concourse. With Alipine v3.8 headed to End of Support on 2020-05-01 it was time to update to Alpine v3.11 which should keep us up-to-date till 2021-11-01.
Removed autopilot cf cli plugin (see changes to zero-downtime-push command)
When pushing an app with environment_variables without a manifest, we create a temporary manifest that contains the env: attribute. This was being done at the global attribute level, resulting in cli deprecation warnings: Deprecation warning: Specifying app manifest attributes at the top level is deprecated. Found: env. This is now fixed by creating a manifest with the env: attribute properly set at the application level. No more deprecation warnings (thanks to a PR by @destasys)
Changed
Replaced all direct calls to cf cli with a cf::cf wrapper function. This is the first pass at being able to specify which version of the cf cli you want to use (in preparation for testing the cf7 version of the cli)
This release introduces some major changes to the project structure. The cf-cli-resource has come a long way since its humble beginnings in early 2017 and it was about time to do some spring cleaning. Thankfully our test cases have ensured that we were able to make these changes with confidence. Check out the rest of the release notes for all the details.
add-network-policy and remove-network-policy commands now support the destination_org and destination_space params for targeting a destination app in a different org and/or space.
create-service command now supports the broker param to disambiguate if you have two services with the same name.
Renamed assets folder to resource. This makes it simpler to locate scripts whether we are running tests locally or in a Docker image.
Renamed cf_* functions to cf::* to follow the "package" naming convention.
Moved all supporting function libraries to respective resource/lib and itest/lib folders.
Refactored resource/out to invoke resource commands from separate files (see resource/commands folder). This should make adding new commands much cleaner and easier.
cf_home param for supplying a CF_HOME folder which (in this initial release) allows for passing on a previously configured .cf/config.json file for CF API authentication (thanks to a PR by @lbenedix)
Changed
push command now supports the domain param, thanks to a PR by @vixus0
enable-service-access and disable-service-access used a very mis-leading service_broker param to represent the name of the marketplace service to enable/disable. So, the service_broker param is now deprecated and is superseded by the new properly named service param.
command_file previously only worked by specifying an absolute file path. This is fixed to correctly support relative paths and the tests have been updated accordingly, thanks to a PR by @renbeynolds
Fixed create-user-provided-service example for specifying a route_service_url, thanks to a PR by @eruvanos
run-route-tests now properly test if an app is mapped to a route
share-service command - Share a service instance with another space
unshare-service command - Unshare a shared service instance from a space
rename command - Rename an app
Source configuration now supports origin for username & password authentication
Source configuration now supports client_id and client_secret for authentication
command_file support - You can now configure command or commands in an external yaml file, thanks to a PR by @senglin
Changed
Test cleanup now deletes orphaned service brokers from previously failed tests
With the authentication changes in this release, the cf_login function was getting a bit overloaded, so it's now gone in favor of separate cf_api, cf_auth_user, and cf_auth_client functions
push changes in 2.8.1 to support app_name with spaces accidentally broke path globbing. All fixed now (run-app-tests has been updated to test for this now), sorry for the inconvenience!
restart command - Stop all instances of the app, then start them again. This causes downtime.
restage command - Recreate the app's executable artifact using the latest pushed app files and the latest environment (variables, service bindings, buildpack, stack, etc.)
enable-feature-flag command - Allow use of a feature
disable-feature-flag command - Prevent use of a feature
Changed
Better cleanup of users created by tests
The cf_user_exists function used in tests now handles result pagination
create-user-provided-service when checking if a ups already exists, the command now only checks the current space instead of every space the user has access to.
cf_trace: true no longer messes up cf calls that are intended to capture the json output inside scripts. For now, we set CF_TRACE=false for all cf calls where we need to capture the output. I think there is a way to redirect the CF_TRACE output, but I couldn't figure it out with the way we do stdout and stderr redirects in the out script. Until then, please note that you won't see the trace info everycf command used in the script.
We now have a dedicated Cloud Foundry instance to use for integration testing (thanks Pivotal!!). This should help turn-around PRs and issues a little faster.
Support cf_trace, cf_dial_timeout and cf_trace configurations for source and command params.
unbind-service command - Unbind a service instance from an app
Changed
Updated docs to clarify the use of logical names for put steps.
delete-service command now supports wait_for_service param for deleting asynchronous services.
Refactored integration tests to default to PCF Dev for local testing while allowing for overriding by exporting env vars before running the test script.
Added test job to pipeline to run the integration tests after the Docker image is built.
Refactored service creation/binding/deletion tests to better focus on synchronous and asynchronous services.
Fixed
wait-for-service command errors if the service does not exist.
Fixed enable-service-access and disable-service-access both now properly treat plan and access_org as optional, thanks to a PR by @legnoh
Docs for enable-service-access and disable-service-access have been corrected to reference service_broker argument name (was incorrectly set to service).
Generate release notes from change log for github release.
Changed
create-user-provided-service command no longer fails if there is an existing user provided service by the same name. NOTE: This is a departure from how the normal cf cups ... command works as it normally fails with an error:
Server error, status code: 400, error code: 60002, message: The service instance name is taken: my-cups-service