Releases: SFDO-Tooling/CumulusCI
3.28.0
Changes:
-
Added a new task,
composite_request
, for calling the Composite REST Resource. #2341 -
The
create_package_version
task has a new option,version_base
, which can be used to increment the package version from a different base version instead of from the highest existing version of the 2gp package. Thebuild_feature_test_package
flow now uses this option to create a package version with the minor version incremented from the most recent 1gp release published to github. #2357 -
The
create_package_version
task now supports setting a post-install script and uninstall script when creating a managed package version, by setting thepost_install_script
anduninstall_script
options. By default, these options will use the values ofinstall_class
anduninstall_class
from thepackage
section ofcumulusci.yml
. #2366 -
Updated to Snowfakery 1.5.
-
Robot Framework:
-
The
Click related list button
keyword has been modified to be more liberal in the types of DOM elements it will click on. Prior to this change it only clicked on anchor elements, but now also works for related list buttons that use an actual button element. #2356 -
The
Click modal button
keyword now attempts to find the given button anywhere on the modal rather than only inside aforce-form-footer
element. #2356
-
Issues closed:
-
Robot Framework:
-
Fixed a possible error when running CumulusCI flows embedded in a multi-threaded context. #2347
3.27.0 (2021-01-21)
Changes:
-
Snowfakery 1.4 which includes min, max, round functions. PR #2335
-
The
ensure_record_types
task has a new option,force_create
, which will create the Record Type even if other Record Types already exist on the object. (Thanks to @bethbrains) PR #2323 -
Allow num_records and num_records_tablename to be omitted when using the task generate_and_load_from_yaml. PR #2322
-
Added a new Metadata ETL task, add_fields_to_field_set which allows adding fields to existing field sets. (Thanks to @bethbrains) PR #2334
-
org_settings now accepts a dict option called settings in addition to (or instead of) the existing definition_file option. (Thanks to @bethbrains) PR #2337
-
New Robot Keywords for Performance Testing: #2291
-
Set Test Elapsed Time: This keyword captures a computed rather than measured elapsed time for performance tests.
-
Start Perf Time, End Perf Time: start a timer and then store the result.
-
Set Test Metric: store any test metric, not just elapsed time.
-
-
CumulusCI now reports how long it took for flows to run. #2249
Issues Closed:
-
Fixed an error that could occur while cleaning cache directories.
-
Fixed potential bugs in the Push Upgrade tasks.
-
CumulusCI displays more user friendly error message when encountering parsing errors in cumulusci.yml. #2311
-
We fixed an issue causing the extract_dataset task to fail in some circumstances when both an anchor date and Record Types were used. #2300
-
Handle a possible gack while collecting info about installed packages #2299
3.26.0
Changes:
- CumulusCI now reports how long it took for flows to run.
- Flows
ci_feature
andci_feature_beta_deps
now only run the
github_automerge_feature
task if the branch begins with the
configured feature branch prefix. - Running the
deploy
task with thepath
option set to a path that
doesn't exist will log a warning instead of raising an error. - When the
ci_feature_2gp
andqa_org_2gp
flows install
dependencies, the latest beta version will be used when available. - CumulusCI can now resolve dependencies using second-generation
packages (2GPs) for upstream projects. When a 2GP build runs on a
release branch (starting withprefix/NNN
, whereprefix
is the
feature branch prefix andNNN
is an integer), CumulusCI will look
for a matching release branch in each upstream dependency and use a
2GP package build on that release branch if present, falling back to
a 1GP beta release if not present.
Issues Closed:
- Fixed the
org_settings
task to handle nested structures in org
settings. - Fixed a bug where cci task run could fail without a helpful error if
run outside of a cci project folder. - Fixed an issue that caused CumulusCI to generate invalid
package.xml
entries for Metadata API-format projects that include
__mocks__
or__tests__
LWC directories. - Fixed the
update_dependencies
task to handle automatic injection
of namespace prefixes when deploying an unpackaged dependency. The
fix for the same issue in CumulusCI 3.25.0 was incomplete. - Fixed an issue where an unquoted
anchor_date
in bulk data mapping
failed validation. - CumulusCI now handles an error that can occur while collecting info
about installed packages - Fixed an issue causing the
extract_dataset
task to fail in some
circumstances when both an anchor date and Record Types were used. - Fixed an issue where the deprecated syntax for record types was not
working in theload_dataset
task.
3.25.0
Changes:
- New tasks:
assign_permission_set_groups
assigns Permission Set Groups to
a user if not already assigned.assign_permission_set_licenses
assigns Permission Set Licenses
to a user if not already assigned.
- New preflight checks for use with MetaDeploy install plans:
check_enhanced_notes_enabled
checks if Enhanced Notes are
enabled.check_my_domain_active
checks if My Domain is active.
- The
github_copy_subtree
task has a new option,renames
, which
allows mapping between local and target path names when publishing
to support renaming a file or directory from the source repository
in the target repository. - The
ensure_record_types
task has a new option,
record_type_description
, which can be used to set the description
of the new record type if it is created. - Robot Framework:
- New keyword
Field value should be
- New keyword
Modal should show edit error for fields
to check
form field error notifications in Spring '21 - Adjusted
Get field value
andSelect dropdown value
fields to
work in Spring '21
- New keyword
- Command line improvements:
- The various
cci org
commands now accept an org name with the
--org
option, for better consistency with other commands.
Specifying an org name without--org
also still works. - Running
cci org default
without specifying an org name will
now display the current default org.
- The various
- Org configs now have properties
org_config.is_multiple_currencies_enabled
and
org_config.is_advanced_currency_management_enabled
which can be
used to check if these features are enabled. - The
MergeBranchOld
task, which was previously deprecated, has now
been removed.
Issues closed:
- Fixed the
update_dependencies
task to handle automatic injection
of namespace prefixes when deploying an unpackaged dependency. - Fixed the
query
task, which was completely broken. - Fixed the
connected_app
task to pass the correct username to sfdx.
Thanks @atrancadoris - Fixed the display of task options with an underscore in
cci task info
output. - Fixed a confusing warning when creating record types using
Snowfakery. (#2093) - Improved handling of errors while deleting a scratch org.
3.24.1
Issues Closed:
- Fixed a regression that prevented running unmanaged flows on persistent orgs, due to the use of the
include_beta
option while installing dependencies, which is not allowed for persistent orgs. We changed theupdate_dependencies
task to ignore the option and log a warning when running against a persistent org, instead of erroring.
3.24.0
Critical Changes:
- The flows
dev_org
,dev_org_namespaced
,qa_org
,ci_feature
,
andinstall_beta
now run theupdate_dependencies
task with the
include_beta
option enabled, so dependencies will be installed
using the most recent beta release instead of the most recent final
release. Thebeta_dependencies
flow is no longer used and is
considered deprecated. - The flows
ci_feature_beta_deps
anddev_org_beta_deps
are now
deprecated and should be replaced by their default equivalents
above. - The
ci_feature_2gp
flow has been changed to useconfig_apextest
instead ofconfig_managed
to avoid configuration steps that are
unnecessary for running Apex tests. This means that in order for
ci_feature_2gp
to work,config_apextest
must be set up to work
in both managed and unmanaged contexts. - When connecting GitHub using
cci service connect github
, we now
prompt for a personal access token instead of a password. (GitHub
has removed support for accessing the API using a password as of
November 2020.) If you already had a token stored in thepassword
field, it will be transparently migrated totoken
. If you were
specifying--password
on the command line when running this
command, you need to switch to--token
instead. - Removed the old
cumulusci.tasks.command.SalesforceBrowserTest
task
class which has not been used for some time.
Changes:
-
Added a standard
qa_org_2gp
flow, which can be used to set up a QA
org using a 2nd-generation package version that was previously
created using thebuild_feature_test_package
flow. This flow makes
use of theconfig_qa
flow, which means thatconfig_qa
must be
set up to work in both managed and unmanaged contexts. This flow is
considered experimental and may change at any time. -
The
batch_apex_wait
task can now wait for Queueable Apex jobs in
addition to batch Apex. -
The
custom_settings_value_wait
task now waits if the expected
Custom Settings record does not yet exist, and does case insensitive
comparison of field names. -
Preflight checks:
- Added a task,
check_sobject_permissions
, to validate sObject
permissions. - Added a task,
check_advanced_currency_management
, to determine
whether or not Advanced Currency Management is active.
- Added a task,
-
Robot Framework:
- In the Robot Framework Salesforce resource, the
Open Test Browser
keyword now accepts an optionaluseralias
argument which can be used to open a browser as a different
user. The user must already have been created or authenticated
using the Salesforce CLI.
- In the Robot Framework Salesforce resource, the
-
Updated to Snowfakery 1.3.
Issues Closed:
- Improved error handling of REST API responses to confirm they are
JSON. - Fixed error handling in the
load_dataset
task in Windows. - Fixed a bug where pressing
Ctrl+C
while runningcci org connect
in Windows did not exit. (#2027) - Fixed a bug where deploying an LWC component bundle using the
deploy
task did not include files in subfolders. - Fixed the
deploy
task so that deploying an empty metadata
directory does not error. - Fixed a bug where the
namespace_inject
option was not included
when freezing deploy steps for MetaDeploy, causing namespace
injection to not work when running the plan in MetaDeploy. - Fixed a bug where running the
robot
task as a cross-project task
could not load Robot Framework libraries from the other project.
3.23.0
Changes:
- CumulusCI now accepts a normalized task option syntax in the form
of:--opt-name value
. This can be used in place of the old task
option syntax:-o opt-name value
. - Tasks which perform namespace injection can now automatically
determine whether they are running in the context of a managed
installation or a namespaced scratch org. This means that in many
cases it is no longer necessary to explicitly specify options like
managed
/unmanaged
/namespaced
/namespaced_org
/namespace_inject
,
or to use a separate flow for namespaced scratch orgs. - The
deploy_unmanaged
flow now deploys sfdx-formatted metadata
using the Metadata API rather than the sfdxforce:source:push
command. This avoids an issue where sfdx could show an error about
the pushed components conflicting with other changes that already
happened in the org. It also improves consistency between how
metadata is deployed to a scratch org and how it is deployed to a
packaging org. - Removed the
namespaced_org
option for theupdate_dependencies
task, which was not functional. - We added support for including SOQL where-clauses
Salesforce Query
Robot keyword via thewhere
keyword argument. - The
create_package_version
task can accept a
static_resource_path
option. - The FindReplace task now has a
replace_env
option which, if true,
will interpret thereplace
option as the name of an environment
variable whose value should be used for the replacement. - We added a new command,
cci project doc
, which will document
project-specific tasks to a reStructuredText file.
Issues closed:
- An error that occurred when building a second-generation package
using a cross-project task has been fixed. - The
github_package_data
task will now work for projects using API
versions prior to 44.0. - Fixed a bug where namespace injection of the
%%%NAMESPACED_ORG%%%
token with thenamespaced_org
option enabled did not actually add
the namespace prefix unless themanaged
option was also enabled. - We fixed an issue that resulted in the
batch_size option in a data mapping
file being ignored.
3.22.0
Changes:
- We added support for using Robot keywords from other projects that are included as
sources
.- The
suites
option of the robot task can now take a list of suite paths. Paths can include a prefix representing a remote repository as defined by thesources
configuration option (eg:-o suites npsp:robot/Cumulus/tests/api
) - The robot task has a new
sources
option to work in conjunction with the globalsources
option to allow the use of keywords and tests from other repositories. - When running the
robot
task, the folder containing downloaded repositories via thesources
option are added toPYTHONPATH
so that robot tests can find library and resource files in those repositories
- The
- Bulk Data tasks now support adding or removing a namespace from a mapping file to match the target org.
- We improved how we parse Boolean values in Bulk Data tasks and in command line options. True can be represented as "yes", "y", "true", "on", or "1", with any capitalization, and False as "no", "n", "false", "off", "0". None as a synonym for False is deprecated.
- We added support for including managed package release details in automatically generated release notes.
- We added a task,
assign_permission_sets
, to assign Permission Sets to a user. - We updated the default API version for new projects to 50.0.
- The
build_feature_test_package
flow now creates a 2GP package version with the "skip validation" option turned on. github_automerge_main
now only merges to the lowest numbered release branch when multiple are detected.
Issues closed:
- We fixed an issue with relative imports within parallel Robot test runs by adding the repo root to PYTHONPATH.
- We fixed an issue with generating
package.xml
manifests for directories that contain reports in folders that aren't owned by the project. - We now handle an exception that may occur while creating merge conflict PRs during parent-child automerges.
3.21.1
3.21.0
Changes:
- The
update_admin_profile
task now accepts theapi_names
option to target extra Profiles, even when using a custompackage.xml
. - The
github_automerge_main
task can now be used on source branches other than the default branch to merge them into branches starting with thebranch_prefix
option, as long as the source branch does not also start withbranch_prefix
. - Added preflight check tasks to validate org settings (
check_org_settings_value
) and to check that Chatter is enabled (check_chatter_enabled
). These are intended for use with MetaDeploy install plans. - Updated to Snowfakery 1.2.
Issues closed:
- Fixed an issue in the
load_dataset
task which left out non-Person-Account Contacts if the dataset was extracted using the REST API.