Releases: SFDO-Tooling/CumulusCI
3.35.0
Critical Changes
- Upgraded Robot Framework to 4.x. For information about new features
and some backward incompatibilities see the Robot Framework 4.0
release
notes.
(#2603) - The
update_dependencies
task now guarantees to resolve unpackaged
metadata directories (subdirectories ofunpackaged/pre
and
unpackaged/post
) in alphabetical order, matching the behavior of
deploy_pre
anddeploy_post
.unpackaged/pre/bar
will deploy
prior tounpackaged/pre/foo
. The previous behavior was undefined,
which caused rare problems. This change is critical only for
projects that have deployment-order dependencies between unpackaged
directories located in upstream dependencies and rely on the current
undefined load order. (#2588)
Changes
- The CumulusCI documentation has a new section: Testing with
Second-Generation
Packaging
(#2597) - CumulusCI has two new service types:
oauth2_client
&
marketing_cloud
. These are considered experimental. (#2602) - The
marketing_cloud
service allows users to connect to a Marketing
Cloud tenant via OAuth so that tasks that work with Marketing Cloud
can make API calls on the user's behalf. (#2602) - The
oauth2_client
service takes information for an individual
OAuth2 client which can then be used in place of the default client.
This currently applies only to themarketing_cloud
service. To
setup a Marketing Cloud service with a specific OAuth2 client use:
cci service connect marketing-cloud <name-of-service> --oauth_client <name-of-oauth-client>
.
(#2602) - CumulusCI has a new task:
deploy_marketing_cloud_package
. This
task allows a user to pass the path to a .zip file to a Marketing
Cloud package (downloaded from the Marketing Cloud Package Manager)
and deploy the package via amarketing_cloud
service (see above).
Note that successfully deploying a package using this task may
require permissions that are not generally available. (#2602) - The
install_managed
andinstall_managed_beta
tasks now take no
action if the specified package is already installed in the target
org. (#2590) - The
cci org list
command can now output inJSON
format by
passing it the--json
flag. (#2593)
Issues Closed
- Fixed an issue parsing
cumulusci.yml
files that contained Unicode
characters on Windows. (#2617) - Fixed an issue in the
github_copy_subtree
task where CumulusCI
would silently generate incorrect or truncated commits when a
directory was passed to theinclude
task option. (#2601) - The
deploy_pre
anddeploy_post
tasks avoid warnings by freezing
installer steps that match current expectations. (#2589)
v3.34.1: Bugfix for load_data
We fixed a regression in the load_dataset
task where some sObjects could not be loaded without explicitly turning off the new set_recently_viewed
option.
v3.34.0
Critical Changes:
- If you have custom flows that utilize the
github_release
task,
they will need to be updated to include thepackage_type
option
(which is required). (#2546)
Changes:
-
The
github_release
task now has apackage_type
option which
is included in the information written to GitHub release tags.
The following standard library "release" flows have been updated
with hardcoded values (either1GP
or2GP
) for this option:- `release_beta` (1GP) - `release_production` (1GP) - `release_2gp_beta` (2GP) - `release_2gp_production` (2GP)
(#2546)
-
The
update_dependencies
task now supports apackages_only
option, which suppresses the installation of unpackaged metadata
dependencies. This option is intended to support building
update-only or idempotent installers. (#2587) -
The
github_automerge_main
task has a new option,
skip_future_releases
, which can be set toFalse
to disable the
default behavior of skipping branches that are numeric (and thus
considered release branches) but not the lowest number. (#2582) -
Added an new option
set_recently_viewed
to theload_dataset
task
that sets newly inserted data as recently viewed. This changes the
default behavior. By default (if you do not specify the option), the
first 1000 records inserted via the Bulk API will be set as recently
viewed. If fewer than 1000 records are inserted, existing objects of
the same type being inserted will also be set as recently viewed.
(#2578) -
The
update_dependencies
task can now consume 2GP releases in
upstream repositories, provided they're stored in release tags as
generated by CumulusCI. (#2557) -
The
extract_dataset
andload_datast
tasks now support adding or
removing a namespace from a mapping file to match the target org for
sObjects and not just fields. (#2532) -
The
create_package_version
task can now increment package version
numbers when the package is not in a released state. (#2547) -
Includes Snowfakery 1.10 with upgrades to its Fake data functions.
Issues Closed
- Fixed an error in the
github_automerge_main
task when using a
branch prefix that doesn't contain a slash. (#2582) - Fixed logic in the
push_sandbox
andpush_all
tasks which was
selecting the wrong package versions. (#2577) - Improved logging of errors from sfdx while converting sfdx format
metadata to deploy via the Metadata API, so that they are not lost
when CumulusCI is embedded in another system like MetaCI or Metecho.
(#2574)
3.33.1
Changes:
- The
create_package_version
task now accepts an--ancestor-id
option to specify the 04t Id of the package version that should be considered the ancestor of a new managed package version. The option can also be set tolatest_github_release
to look up the 04t Id of the project's most recent release on GitHub. (#2540)
Issues closed:
-
Fixed a regression where the
release_beta
flow would throw an error if the project has unmanaged github dependencies. (#2566) -
Fixed a regression where the
cci service connect
command could no longer connect a service without giving it a name. Now a default name will be assigned. (#2568) -
Fixed a regression when resolving unpackaged dependencies from GitHub releases. (#2571)
-
Fixed a regression with creating a scratch org if the devhub service was configured but not set as the default. (#2570)
-
Improved the formatting of
cumulusci.yml
validation warnings. (#2567)
3.33.0
Critical Changes:
- CumulusCI's dependency management modules have been rewritten. This grants new capabilities and removes some existing features. (#2456)
-
All package installations now perform retries if the package is not yet available.
-
Package installations are also retried on common row locking errors.
-
You can now obtain fine-grained control over how your projects resolve dependencies. It's much easier to control where your application uses beta managed packages and second-generation packages to satisfy dependencies.
-
You can now execute 2GP builds that use 2GPs from upstream feature branches matching your current branch, not just release branches.
-
The
update_dependencies
task no longer supports uninstalling managed packages in a persistent org as part of the dependency installation process. -
The
update_dependencies
task no longer supports theallow_newer
option, which is always True. -
The install order of
update_dependencies
changes slightly where multiple levels of upstream dependency haveunpackaged/pre
metadata. Where previously one package'sunpackaged/pre
might be installed prior to its own upstream dependency,unpackaged/pre
will now always be installed immediately prior to the repo's package. -
Projects using unmanaged dependencies that reference GitHub subfolders will see a change in resolution behavior. Previously, a dependency specified like this:
dependencies: - github: https://github.com/SalesforceFoundation/NPSP subfolder: unpackaged/config/trial
would always deploy from the latest commit on the default branch. Now, this dependency will be resolved to a GitHub commit just like a dependency without a subfolder, selecting the latest beta or production release as determined by the chosen resolution strategy.
-
The
project__dependencies
section incumulusci.yml
no longer supports nested dependencies specified like this:dependencies: - namespace: "test" version: "1.0" dependencies: - namespace: "parent" version: "2.2"
All dependencies should be listed in install order.
-
Changes:
- CumulusCI now supports named services! This means you can configure multiple services of the same type under different names. If you run
cci service list
you will note that your existing global services will have the nameglobal
, and any project-specific services will have the nameproject_name
. (#2499)- You must now specify both a service type and a service name when connecting a new service using
cci service connect
. - CumulusCI has a new command:
cci service default
. This command sets the default service for a given type. - CumulusCI has a new command:
cci service rename
. This command renames a given service. - CumulusCI has a new command:
cci service remove
. This command removes a given service.
- You must now specify both a service type and a service name when connecting a new service using
- A validator now checks
cumulusci.yml
and shows warnings about values that are not expected. (#1624) - Added a friendly error message when a GitHub repository cannot be found when set as a dependency or cross-project source. (#2535)
- Task option command line arguments can now be specified with either an underscore or a dash: e.g.
clean_meta_xml
can be specified as either--clean_meta_xml
or--clean-meta-xml
or-o clean-meta-xml
(#2504) - Adjustments to existing tasks:
- The
update_package_xml
task now supports additional metadata types. (#2549) - The
push_sandbox
andpush_all
tasks now use the Bulk API to query for subscriber orgs. (#2338) - The
push_sandbox
andpush_all
tasks now default to including all orgs whose status is not Inactive, rather than only orgs with a status of Active. This means that sandboxes, scratch orgs, and Developer Edition orgs are included. (#2338) - The
user_alias
option for theassign_permission_sets
,assign_permission_set_groups
, andassign_permission_set_licenses
tasks now accepts a list of user aliases, and can now create permission assignments for multiple users with a single task invocation. (#2483) - The
command
task now sets thereturn_values
to a dictionary that contains the return code of the command that was run. (#2453)
- The
- Data generation with Snowfakery:
- Updated to [Snowfakery 1.9] (https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v1.9)(\#2538)
- Robot Framework:
- Changes for CumulusCI developers:
Issues Closed:
3.32.1
3.32.0
Changes:
- A new task,
create_network_member_groups
, creates
NetworkMemberGroup records to grant specified Profiles or
Permissions Sets access to an Experience Cloud site (community).
(#2460, thanks @ClayTomerlin) - A new preflight check task,
get_existing_sites
, returns a list of
existing Experience Cloud site names in the org. (#2493) - It is now possible to create a flow which runs the same sub-flow
multiple times, as long as they don't create a self-referential
cycle. (#2494) - Improvements to support for releasing 2nd-generation (2GP) packages:
- The
github_release
task now includes the package version's 04t
id in the message of the tag that is created. (#2485) - The
promote_package_version
task now defaults to promoting the
package version corresponding to the most recent beta tag in the
repository, ifversion_id
is not specified explicitly.
(#2485) - Added a new flow,
release_2gp_beta
, which creates a beta
package version of a 2GP managed package and a corresponding tag
and release in GitHub. (#2509) - Added a new flow,
release_2gp_production
, which promotes a 2gp
managed package version to released status and creates a
corresponding tag and release in GitHub. (#2510)
- The
- Data generation with Snowfakery:
- Updated to Snowfakery 1.8.1 (#2516)
- Snowfakery can now use "load files" to provide hints about how
objects should be loaded. - Values for the
bulk_mode
,api
, andaction
parameters in
mapping files are now case insensitive.
- Robot Framework:
- Added a new keyword,
Input Form Data
, for populating form
fields of many different types. This keyword is considered
experimental but is intended to eventually replace
Populate Form
. (#2496) - Added a new keyword,
Locate Element by Label
, for finding form
inputs using their label. (#2496) - Added a custom locator strategy called
label
which uses
Locate Element By Label
(e.g.label:First Name
). (#2496) - Added two new options to the robot task:
ordering
and
testlevelsplit
. These only have an effect when combined with
theprocesses
option to run tests in parallel.
- Added a new keyword,
Issues Closed:
- The
cci org import
command now shows a clearer error message if
you try to import an org that is not a locally created scratch org.
(#2482)
3.31.0
Changes:
- It is now possible to pass the
--noancestors
flag to sfdx when creating a scratch org by settingnoancestors: True
in the scratch org config incumulusci.yml
. Thanks @lionelarmanet (#2452) - The
robot_outputdir
return value from therobot
task is now an absolute path. (#2442) - New tasks:
Snowfakery 1.7:
- Adds support for Salesforce Person Accounts.
Issues Closed:
cci project init
no longer overwrites existing files. If files already exist, it displays a warning and outputs the rendered file template. #1325
3.30.0
Critical changes:
-
We are planning to remove functionality in CumulusCI's dependency management in a future release.
-
The
update_dependencies
task will no longer support uninstalling managed packages in a persistent org as part of the dependency installation process. -
The
allow_newer
option onupdate_dependencies
will be removed and always be True. -
The
project__dependencies
section incumulusci.yml
will no longer support nested dependencies specified like this ::dependencies:
- namespace: "test"
version: "1.0"
dependencies:
- namespace: "parent"
version: "2.2"
All dependencies should be listed in install order.
We recommend reformatting nested dependencies and discontinuing use of
allow_newer
and package uninstalls now to prepare for these future changes. -
Changes:
- We released a new suite of documentation for CumulusCI.
- CumulusCI now caches org describe data in a local database to provide significant performance gains, especially in
generate_dataset_mapping
. - The
cci org browser
command now has a--path
option to open a specific page and a--url-only
option to output the login URL without spawning a browser. - We improved messaging about errors while loading
cumulusci.yml
. - CumulusCI now uses Snowfakery 1.6 (see its release notes).
3.29.0
Changes:
-
The message shown at the end of running a flow now includes the org name. #2390, thanks @Julian88Tex
-
Added new preflight check tasks:
get_existing_record_types
checks for existing Record Types. #2371, thanks @ClayTomerlinget_assigned_permission_sets
checks the current user's Permission Set Assignments. #2386
-
The
generate_package_xml
task now supports the Muting Permission Set metadata type. #2382 -
The
uninstall_packaged_incremental
anduninstall_packaged
tasks now support adry_run
option, which outputs the destructiveChanges package manifest to the log instead of executing it. #2393 -
Robot Framework:
Issues closed:
-
Fixed very slow
cci org connect
on Safari. #2373 -
Added a workaround for decode errors that sometimes happen while processing cci logs on Windows. #2392
-
If there's an error while doing JWT authentication to an org, we now log the full response from the server. #2384
-
Robot Framework: Improved stability of the
ObjectManagerPageObject
. #2391