Releases: SFDO-Tooling/CumulusCI
3.13.1
3.13.0
Changes:
-
A new metadata ETL task,
add_picklist_entries
, safely adds picklist values to an existing custom field. -
Added the
cci org prune
command to automatically remove all expired scratch orgs from the CumulusCI keychain. -
Improvements to the
cci org shell
command:- Better inline help
- New
query
anddescribe
functions
-
Scratch org creation will now wait up to 120 minutes for the org to be created to avoid timeouts with more complex org shapes.
-
The
generate_data_dictionary
task now has more features for complex projects. By default, the task will walk through all project dependencies and include them in the generated data dictionaries. Other non-dependency projects can be included with theadditional_dependencies
option. The output format has been extensively improved. -
The
run_tests
task supports a new option,required_org_code_coverage_percent
. If set, the task will fail if aggregate code coverage in the org is less than the configured value. Code coverage verification is available only in unmanaged builds. -
The
install_managed
andupdate_dependencies
tasks now accept asecurity_type
option to specify whether the package should be installed for all users or for admins only. -
when
expressions can now use thehas_minimum_package_version
method to check if a package is installed with a sufficient version. For example:when: org_config.has_minimum_package_version("namespace", "1.0")
-
Robot Framework:
- Added a new keyword in the modal page objects,
Select dropdown value
. This keyword will be available whenever you use theWait for modal
keyword to pull in a modal page object.
- Added a new keyword in the modal page objects,
Issues closed:
-
Limited the variables available in global scope for the
cci shell
command. -
Tasks based on
BaseSalesforceApiTask
which use the Bulk API now default to using the project's API version rather than 40.0. -
Bulk data tasks:
- The
extract_dataset
task no longer converts to snake_case when picking a name for lookup columns. - Improved error message when trying to use the
load_dataset
command with an incorrect record type. - Fixed a bug with the
generate_mapping_file
option.
- The
3.12.2
Changes:
-
Added a task,
set_duplicate_rule_status
, which allows selective activation and deactivation of Duplicate Rules. -
The
create_community
task now retries multiple times if there's an error. -
The
generate_data_dictionary
task now supports multi-select picklist fields and will indicate the related object for lookup fields. -
The
update_package_xml
task now supports theNavigationMenu
metadata type.
Issued closed:
-
In the Salesforce library for Robot Framework, fixed locators for the actions ribbon and app launcher button in Summer '20.
-
Fixed the
load_dataset
task so that steps which don't explicitly specify abulk_mode
will inherit the option specified at the task level. -
Fixed error handling if an exception occurs within one of the
cci error
commands. -
Fixed error handling if the Metadata API returns a response that is marked as done but also contains an
errorMessage
.
3.12.1
3.12.0
Changes:
-
We've removed the prompt that users see when trying to use a scratch org that has expired, and now automatically recreate the scratch org.
-
The
load_dataset
task now automatically avoids creating Bulk API batches larger than the 10 million character limit. -
Robot Framework:
-
When opening an org in the browser, the Salesforce library now attempts to detect if the org was created using the Classic UI and automatically switch to Lightning Experience.
-
The Salesforce library now has preliminary support for Summer '20 preview orgs.
-
-
CumulusCI now directs
simple-salesforce
to return results as normal Python dicts instead of OrderedDicts. This should have minimal impact since normal dicts are ordered in the versions of Python that CumulusCI supports, but we mention it for the sake of completeness.
Issued closed:
- Fixed an issue where non-ASCII output caused an error when trying to write to the CumulusCI log
in Windows. (#1619)
3.11.0
Changes:
-
CumulusCI now includes Snowfakery,
a tool for generating fake data. It can be used to generate and load data into an org
via the newgenerate_and_load_from_yaml
task. -
Added two new preflight check tasks for use in MetaDeploy:
get_available_licenses
andget_available_permission_set_licenses
.
These tasks make available lists of the License Definition Keys for the org's licenses or PSLs. -
The
get_installed_packages
task now logs its result. -
Robot Framework: Added two new keywords (
Get Fake Data
andSet Faker Locale
)
and a global robot variable (${faker}
) which can be used to generate fake data
using the Faker library.
Issues closed:
-
Fixed an error when loading a dependency whose
cumulusci.yml
contains non-breaking spaces. -
Fixed a PermissionError when running multiple concurrent CumulusCI commands in Windows. (#1477)
-
Show a more helpful error message if a keychain entry can't be loaded
due to a change in the encryption key. -
Fixed the
org_settings
task to use the API version of the org rather than the API version of the package. -
In the Salesforce Robot Framework library, the
Open App Launcher
keyword now tries to detect
and recover from an occasional situation where the app launcher fails to load.
3.10.0
Changes:
-
Added
custom_settings_value_wait
task to wait for a custom setting to have a particular value. -
The
metadeploy_publish
task now has alabels_path
option which specifies a folder to store translations. After publishing a plan, labels_en.json will be updated with the untranslated labels from the plan. Before publishing a plan, labels from other languages will be published to MetaDeploy.
Issues closed:
- Fixed an issue where running subprocesses could hang if too much output was buffered.
3.9.1
Issues closed:
-
The
batch_apex_wait
task will now detect aborted and failed jobs instead of waiting indefinitely. -
Fixed reporting of errors from Robot Framework when it exits with a return code > 250.
-
Fixed an ImportError that could happen when importing the new metadata ETL tasks.
-
Fixed bugs in how the
set_organization_wide_defaults
andupdate_admin_profile
tasks operated in namespaced scratch orgs. -
Show a more helpful error message if CumulusCI can't find a project's repository or release on GitHub. (#1281)
-
Fixed the message shown for skipped steps in
cci flow info
. -
Fixed a regression which accidentally removed support for the
bulk_mode
option in bulk data mappings.
3.9.0
Critical changes:
-
The
update_admin_profile
task can now add field-level permissions for all packaged objects. This behavior is the default for projects withminimum_cumulusci_version
>= 3.9.0 that are not using thepackage_xml
option. Other projects can opt into it using theinclude_packaged_objects
option.The Python class used for this task has been renamed to
ProfileGrantAllAccess
and refactored to use the Metadata ETL framework. This is a breaking change for custom tasks that subclassedUpdateAdminProfile
orUpdateProfile
. -
Refactored how CumulusCI uses the Bulk API to load, extract, and delete data sets. These changes should have no functional impact, but projects that subclass CumulusCI's bulk data tasks should carefully review the changes.
Changes:
-
New projects created using
cci project init
will now get set up with scratch org settings to:- Use the Enhanced Profile Editor
- Allow logging in as another user
- not force relogin after Login-As
-
If
cumulusci.yml
contains non-breaking spaces in indentation, they will be automatically converted to normal spaces. -
Bulk data tasks:
-
Added improved validation that mapping files are in the expected format.
-
When using the
ignore_row_errors
option, warnings will be suppressed after the 10th row with errors.
-
Issues closed:
-
The
github_release
task now validates thecommit
option to make sure it is in the right format. -
If there is an error from
sfdx
while using theretrieve_changes
task, it will now be logged.
3.8.0
Changes:
-
The
batch_apex_wait
task can now wait for chained batch jobs, i.e. when one job starts another job of the same class. -
The metadata ETL tasks that were added in cumulusci 3.7.0 have been refactored to use a new library,
cumulusci.utils.xml.metadata_tree
, which streamlines building Salesforce Metadata XML in Python. If you got an early start writing custom tasks using the metadata ETL task framework, you may need to adjust them
to work with this library instead of lxml.
Issues closed:
-
Adjusted the
run_tests
task to avoid an error due to not being able to access the symbol table for managed Apex classes in Spring '20. Due to this limitation, CumulusCI now will not attempt to retry class-level concurrency failures when running Apex unit tests in a managed package. Such failures will be logged but will not cause a build failure. -
Corrected a bug in storing preflight check results for MetaDeploy when multiple tasks have the same path.