History¶
v4.6.0.dev1 (2025-10-21)¶
What’s Changed¶
Changes¶
Feature: Add validate_only option for Snowfakery & GenerateAndLoadData Task by @aditya-balachander in #3930
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.6.0.dev0…v4.6.0.dev1
v4.6.0.dev0 (2025-10-13)¶
What’s Changed¶
Changes¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.6.0…v4.6.0.dev0
v4.6.0 (2025-09-04)¶
What’s Changed¶
Changes¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.5.0…v4.6.0
v4.5.0 (2025-08-06)¶
What’s Changed¶
Changes¶
Add output_dir option to retrieve_changes task by @vsbharath in #3901
Issues Fixed¶
New Contributors¶
@rupeshjSFDC made their first contribution in #3904
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.4.0…v4.5.0
v4.4.0 (2025-05-05)¶
What’s Changed¶
Changes¶
Add new tasks get_assignable_permission_sets and get_assignable_licenses by @vsbharath in #3892
Issues Fixed¶
fix: Make get permset licenses return active only by @jstvz in #3888
fix: Read the docs configuration by LaTeX into PDF by @dcinzona in #3891
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.3.0.dev0…v4.4.0
v4.3.0.dev0 (2025-02-19)¶
What’s Changed¶
Changes¶
@W-17717398: Fix for Error When Local Records Are Empty During SELECT Action by @aditya-balachander in #3877
Changed Check Components to add a get repo components function by @jain-naman-sf in #3881
Fixed the mdapi issue for Check Components by @jain-naman-sf in #3882
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.3.0…v4.3.0.dev0
v4.3.0 (2025-02-07)¶
What’s Changed¶
Changes¶
Fix the check_sobjects_available task to take the api_version from Cumulusci.yml by @lakshmi2506 in #3875
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.2.0…v4.3.0
v4.2.0 (2025-01-20)¶
What’s Changed¶
Changes¶
fix: Prevent ‘directory not empty’ error in
snowfakeryon Linux by @schenkkp in #3864@W-17621812: Update _get_required_permission_types to handle SELECT operations by @aditya-balachander in #3870
New Contributors¶
@RupertBarrow made their first contribution in #3490
@schenkkp made their first contribution in #3864
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.1.0…v4.2.0
v4.1.0 (2025-01-09)¶
What’s Changed¶
Changes¶
Remove default declaration for select rows query by @mjawadtp in #3867
@W-17427085: Set ANNOY related dependencies to be optional by @aditya-balachander in #3858
Update on the documentation for SFDX_ORG_CREATE_ARGS environment variable by @lakshmi2506 in #3861
@W-16485311: Core Logic for Selecting Records from Target Org by @aditya-balachander in #3818
Add integration tests for all selection strategies by @mjawadtp in #3851
@W-17357226: Fix for issue where zero threshold defaulted to select by @aditya-balachander in #3853
@W-17366392: Fix Omnistudio issues for the sf command format by @lakshmi2506 in #3855
fix: restore task and flow reference docs by @jstvz in #3856
@W-17412267: Fix for records not being inserted when threshold 0 by @aditya-balachander in #3857
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.0.1.dev1…v4.1.0
v4.1.0.dev1 (2025-01-01)¶
What’s Changed¶
Changes¶
@W-17427085: Set ANNOY related dependencies to be optional by @aditya-balachander in #3858
Update on the documentation for SFDX_ORG_CREATE_ARGS environment variable by @lakshmi2506 in #3861
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.0.1.dev0…v4.0.1.dev1
v4.0.1.dev0 (2024-12-16)¶
What’s Changed¶
Changes¶
@W-16485311: Core Logic for Selecting Records from Target Org by @aditya-balachander in #3818
Add integration tests for all selection strategies by @mjawadtp in #3851
@W-17357226: Fix for issue where zero threshold defaulted to select by @aditya-balachander in #3853
@W-17366392: Fix Omnistudio issues for the sf command format by @lakshmi2506 in #3855
fix: restore task and flow reference docs by @jstvz in #3856
@W-17412267: Fix for records not being inserted when threshold 0 by @aditya-balachander in #3857
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.0.1…v4.1.0
v4.0.1 (2024-11-18)¶
Issues Fixed¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v4.0.0…v4.0.1
v4.0.0 (2024-11-12)¶
What’s Changed¶
Critical Changes¶
Python versions 3.8, 3.9, and 3.10 are no longer supported.
Switch to
sfCLI commands @lakshmi2506 in #3829Removed the
dx_pullanddx_pushtasks as the underlying commands were removed fromsf
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.92.0…v4.0.0
v3.93.0 (2024-10-17)¶
What’s Changed¶
Changes¶
fix: escape stage name when running ensure_record_type task by @leo-dcfa in #3827
Fix
TypeErrorwhen permissionSetGroup has a mutingPermissionSet by @lakshmi2506 in #3834Add
check_componentspreflight to detect metadata component conflicts (#3837) by @vsbharath in #3837
New Contributors¶
@leo-dcfa made their first contribution in #3827
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.92.0…v3.93.0
v3.92.0 (2024-09-18)¶
What’s Changed¶
Changes¶
fix: Update input handlers with new Salesforce lightning-primitive tags by @chanyahn-st in #3822
New Contributors¶
@chanyahn-st made their first contribution in #3822
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.91.0…v3.92.0
v3.91.0 (2024-08-22)¶
What’s Changed¶
Changes¶
Fix to Include All Keys in standardValue XML for add_standard_value_set_entries Task from Entries Option with Backward Compatibility by @lakshmi2506 in #3820
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.90.1…v3.91.0
v3.90.1 (2024-08-20)¶
What’s Changed¶
Changes¶
Fix to Suppress the required field check for the upsert action at mapping step by @lakshmi2506 in #3817
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.90.0…v3.90.1
v3.90.0 (2024-07-15)¶
What’s Changed¶
Changes¶
Add tasks to extract and upload files (Salesforce Files) by @mjawadtp in #3801
Update the validation for loading to check the required fields as well by @lakshmi2506 in #3807
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.89.0…v3.90.0
v3.89.0 (2024-06-20)¶
What’s Changed¶
Changes¶
Added the
list_filestask to display files in an org by @lakshmi2506 in #3799The
api_namesoption of theassign_permission_set_licensestask now accepts eitherDeveloperNameorPermissionSetLicenseKeyby @lakshmi2506 in #3798
v3.88.0 (2024-05-24)¶
What’s Changed¶
Changes¶
Extend modal close wait with custom timeout by @leboff in #3783
Added check_output true to get the logs of metadata retrieval by @lakshmi2506 in #3789
Issues Fixed¶
New Contributors¶
@yippie made their first contribution in #3566
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.87.0…v3.88.0
v3.87.0 (2024-05-17)¶
What’s Changed¶
Changes¶
New Contributors¶
@leboff made their first contribution in #3748
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.86.1…v3.87.0
v3.86.1 (2024-05-06)¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.86.0…v3.86.1
v3.86.0 (2024-03-27)¶
What’s Changed¶
Changes¶
@W-15258380 - Reloading of login URL’s from env before creating jwt session by @lakshmi2506 in #3765
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.85.0…v3.86.0
v3.85.0 (2024-03-13)¶
What’s Changed¶
Changes¶
Fix Invalid Lookups of namespaced fields by @aditya-balachander in #3759
Fix Id Not Specified on Update Call by @aditya-balachander in #3761
Fix dependency parsing errors caused by
collision_checkoption by @jstvz in #3760
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.84.3…v3.85.0
v3.84.3 (2024-02-24)¶
What’s Changed¶
Changes¶
Fix: Type Error while loading Contacts when PersonAccount is enabled by @jkasturi-sf in #3756
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.84.2…v3.84.3
v3.84.2 (2024-02-20)¶
What’s Changed¶
Changes¶
Polymorphic Lookup Data Extraction by @aditya-balachander in #3741
Fix: Mismatch in the order of fields between the step and query during generation of the json request by @aditya-balachander in #3750
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.84.1…v3.84.2
v3.84.1 (2024-02-01)¶
What’s Changed¶
Changes¶
Fix
is_person_typeAttributeErrorin record type handling by @aditya-balachander in #3739
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.84.0…v3.84.1
v3.84.0 (2024-01-29)¶
What’s Changed¶
Changes¶
Incorrect generation of record type mapping table name in a namespaced org context by @lakshmi2506 in #3713
Retrieve pre-flight checks by @lakshmi2506 in #3723
Error during upsert on identical DeveloperName for RecordType of same sObject by @aditya-balachander in #3702
Rollback Operation for Inserts and Upserts by @aditya-balachander in #3718
Profile Retrieval in Metecho by @aditya-balachander in #3711
Identifies and retrieves non-source-trackable Metadata type components by @lakshmi2506 in #3727
fix: re-enable telemetry, make CCI usage identifiable by @mshanemc in #3728
Add permsets to return_values for task get_assigned_permission_sets by @lakshmi2506 in #3736
ListComponents modified to SOAP call by @lakshmi2506 in #3735
New Contributors¶
@mshanemc made their first contribution in #3728
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.83.0…v3.84.0
v3.83.0 (2023-12-08)¶
What’s Changed¶
Changes¶
Allowed namespace injection without managed by @jain-naman-sf in #3677
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.82.0…v3.83.0
v3.82.0 (2023-12-01)¶
What’s Changed¶
Critical Changes¶
Changes¶
Show an error message when no
originremote is present by @lakshmi2506 in #3679Improve task
return_valuesdocumentation by @lakshmi2506 in #3689Task to retrieve a complete Profile from an org by @aditya-balachander in #3672
Make task
optionsread only when using Pydantic option validation by @aditya-balachander in #3695
Issues Fixed¶
New Contributors¶
@mgrandhi made their first contribution in #3683
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.81.0…v3.82.0
v3.81.0 (2023-11-03)¶
What’s Changed¶
Changes¶
Add option to specify release window in
cci org scratchby @jain-naman-sf in #3653Add describe_metadatatypes task by @lakshmi2506 in #3669
Fix JSON output for
cci org infoby @jain-naman-sf in #3675Fix
TypeErrorwhen service sensitive attribute isNoneby @jain-naman-sf in #3674metadeploy_publish presents clear errors when plans are not available by @lakshmi2506 in #3684
Add clear error message when
create_package_versionrun against persistent orgs by @lakshmi2506 in #3676Add collision-check option to deploy task by @jain-naman-sf in #3667
Handling exception when the Tooling API returns a test result with a null method name by @lakshmi2506 in #3681
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.80.0…v3.81.0
v3.80.0 (2023-09-29)¶
What’s Changed¶
Changes¶
Allow setting Major and Minor Version in upload_production task by @jain-naman-sf in #3651
Add better error handling for empty or invalid org and service env vars by @prescod in #3365
Query with install_key in promote_package_version (via @zenibako) by @davidmreed in #3654
Trim whitespaces during service data entry by @aditya-balachander in #3661
Display namespace in output of
cci org infoby @jain-naman-sf in #3662Extend
deploytask to support REST API deployment by @aditya-balachander in #3650Add
ApexTestSuitesupport in therun_teststask by @mjawadtp in #3660Implement variable substitution for nested structures in cumulusci.yml by @aditya-balachander in #3665
Add XPath-based ‘find_replace’ functionality to
deployby @aditya-balachander in #3655Improve message description handling for scratch org cli
not_founderror by @lakshmi2506 in #3659Add
deactivate_flowstask by @lakshmi2506 in #3664
Issues Fixed¶
New Contributors¶
@zenibako made their first contribution in #3654
@jain-naman-sf made their first contribution in #3651
@aditya-balachander made their first contribution in #3661
@mjawadtp made their first contribution in #3660
@lakshmi2506 made their first contribution in #3659
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.79.0…v3.80.0
v3.79.0 (2023-09-07)¶
What’s Changed¶
Changes¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.78.0…v3.79.0
v3.78.0 (2023-08-10)¶
What’s Changed¶
Changes¶
Updated Permission Set preflights to handle Permission Set Groups by @jkasturi-sf in #3623
Added the
create_pull_request_on_conflictoption to automerge tasks by [@BenjaminFrench](https://github.com/ BenjaminFrench) in #3632
Issues Fixed¶
Fixed issues with uploading some Unlocked Packages by @jstvz in #3636
Corrected behavior of the
skip_future_releasesoption by @jstvz in #3624
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.77.0…v3.78.0
v3.77.0 (2023-07-07)¶
What’s Changed¶
Changes¶
Add preflight check for PSL assignments by @davidmreed in #3616
Use Marketing Cloud’s validate endpoint to update deployment packages by @davidmreed and @TheBitShepherd in #3598
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.76.0…v3.77.0
v3.76.0.dev0 (2023-05-25)¶
What’s Changed¶
Changes¶
Use Marketing Cloud’s validate endpoint to update deployment packages by @davidmreed and @TheBitShepherd in #3598
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.76.0…v3.76.0.dev0
v3.76.0 (2023-05-25)¶
What’s Changed¶
Changes¶
Added opt-in Pydantic-based task option parsing. by @prescod in #1618
Add deploy transform to inject org URLs by @davidmreed in #3596
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.75.1…v3.76.0
v3.75.1 (2023-04-14)¶
What’s Changed¶
Issues Fixed¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.75.0…v3.75.1
v3.75.0 (2023-04-13)¶
What’s Changed¶
Changes¶
Fix bug that prevented “api” declaration in
extract_declarationfrom being respected duringcapture_sample_dataset. by @prescod in #3568Update windows install steps by @TheBitShepherd in #3571
CCI projects can now run tasks from their “sources” even when they are custom tasks coded in Python. By @prescod in #3345
The
capture_sample_datatask now looks for adatasetname.load.ymlfile to influence how it generates its .mapping file for subquent loads. By @prescod in #3569
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.74.0…v3.75.0
v3.74.0 (2023-03-06)¶
What’s Changed¶
Changes¶
Allow use of static release notes on GitHub by @davidmreed in #3550
cci service updateby @TheBitShepherd in #3481Add TimelineObjectDefinition metadata type by @jstvz in #3551
Issues Fixed¶
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.73.0…v3.74.0
v3.73.0 (2023-02-16)¶
No changes (other than dependency updates) since v3.72.1.dev2 . Please see the changes below.
v3.72.1.dev2 (2023-02-10)¶
What’s Changed¶
Changes¶
Include
modelVersionin MCPM Payload by @TheBitShepherd in #3523Fix MCPM deploy again by @TheBitShepherd in #3526
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.72.1…v3.72.1.dev2
v3.72.1.dev1 (2023-02-08)¶
What’s Changed¶
Changes¶
Include
modelVersionin MCPM Payload by @TheBitShepherd in #3523Fix MCPM deploy again by @TheBitShepherd in #3526
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.72.1…v3.72.1.dev1
v3.72.1.dev0 (2023-02-08)¶
What’s Changed¶
Changes¶
Change
deploy_marketing_cloud_packagetask to includemodelVersionin MCPM Payload by @TheBitShepherd in #3523
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.72.1…v3.72.1.dev0
v3.72.1 (2023-02-07)¶
What’s Changed¶
Issues Fixed¶
Fixed an issue preventing installation of CumulusCI’s sdist in #3520
v3.72.0 (2023-02-03)¶
What’s Changed¶
Changes¶
Issues Fixed¶
Ensure that products have a slug before publishing translations by @prescod in #3483
Stricter check on what counts as a dataset by @prescod in #3502
Full Changelog: https://github.com/SFDO-Tooling/CumulusCI/compare/v3.71.0…v3.72.0
3.71.0 (2022-12-20)¶
Critical Changes
A few weeks ago we soft-launched a
load_datafeature that matched the dataset loaded to theorg_shape. If you had discovered and used theload_dataoption calledorg_shape_match_only, you should switch to the new task because eventually we will remove the option and only use the newload_sample_datatask. (#3455)
Changes
CumulusCI has two new tasks for working with sample data:
load_sample_dataandcapture_sample_data. (#3455)CumulusCI now offers the ability to inject arbitrary IDs into a project’s metadata components. See the Find-and-Replace Id Injection source transform for more information. (#3460)
CumulusCI now allows for injecting the current running user’s username into a project’s metadata components. See the Find-and-Replace Id Injection source transform for more information. (#3460)
3.70.0 (2022-11-29)¶
The
retrieve_changesandlist_changestasks now properly exclude metadata types thatSFDXis unable to process. These include:AuraDefinition,ExperienceResource, andLightningComponentResourceby @jstvz in https://github.com/SFDO-Tooling/CumulusCI/pull/3443The
deploy_remote_site_settingstask has been updated to load the correct Remote Site Settings records for OmniStudio by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3444
3.69.0 (2022-11-14)¶
Changes
Added support for debugging and breakpoints in Playwright-based Robot Framework by @boakley in https://github.com/SFDO-Tooling/CumulusCI/pull/3408
Added option for deploy task to remove selected components from the bundle by @jkasturi-sf in https://github.com/SFDO-Tooling/CumulusCI/pull/3421
Added documentation for using OmniStudio in Cumulus flows by @bethbrains in https://github.com/SFDO-Tooling/CumulusCI/pull/3427
Update creation of OmniStudio Remote Site Settings for new Salesforce domain patterns (e.g. .*scratch.my.salesforce, *.demo.my.salesforce, etc.) by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3424
Added –debug flag to the deploy_marketing_cloud_package task by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3430
3.68.1 (2022-11-01)¶
Revert a change in parsing config files which was incompatible with some configs
3.68.0 (2022-10-31)¶
Critical Changes
Upgraded Robot Framework from version 4.1.3 to version 6. As with most Robot Framework updates, there are a host of new features and a few deprecated features and backwards incompatibilities. For a complete list consult the Robot Framework release notes in https://github.com/SFDO-Tooling/CumulusCI/pull/3417
Changes
Add support for InstallKey, sourceOrg, release keys on 2GP version create by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3403
We now support the
Territory2,Territory2Model,Territory2Type, andTerritory2RuleMetaData types. by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3406Add
push_upgrade_orgflow to test in simulated push upgrade environment by @davidmreed in https://github.com/SFDO-Tooling/CumulusCI/pull/3286Fixed bug preventing the
deploy_omni_studio_site_settingstask from deploying to scratch orgs with the new.scratch.domain names by @jofsky in https://github.com/SFDO-Tooling/CumulusCI/pull/3411All new keychain details are serialized using JSON, not pickle by @bethbrains in https://github.com/SFDO-Tooling/CumulusCI/pull/3390
Snowfakery (upgraded to 3.4) can now generate Event or Meeting Schedules similar to Calendar Apps
Snowfakery now has a Salesforce.ContentFile feature for generating Content Versions
Issues Fixed
Bumped key_size from 2048 to 4096 on advice from a security audit by @boakley in https://github.com/SFDO-Tooling/CumulusCI/pull/3389
Fixed an issue where unknown deploy statuses could cause polling to hang in the deploy_marketing_cloud_package task by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3394
Fixed an injection vulnerability related to unquoted csv writers by @TheBitShepherd in https://github.com/SFDO-Tooling/CumulusCI/pull/3404
3.67.1 (2022-10-14)¶
Issues Fixed
We added some javascript files that were missing from the 3.67.0 release
3.67.0 (2022-10-13)¶
Critical Changes
CumulusCI now supports GitHub Enterprise. (#3256)
CumulusCI will no longer be supporting installations via
brew. See our docs for the officially supported install method via pipx.(#3382)
Changes
When using Playwright instead of Selenium, we now have limited support for writing keywords in JavaScript. For more information, see the topic “Writing keywords in JavaScript” in the documentation under “Playwright Technology Preview”. (#3378)
Auto-load dataset matching org shape name(#3384)
Updated the dependency resolvers used for commit-status builds (2GP and Unlocked Package parallel testing) to allow resolution to “fall back” from release branches like
feature/240to the repository’s main branch.(#3386)There is a new Playwright-based keyword
Wait until salesforce is ready. This keyword is automatically called by the Open Test Browser keyword in the SalesforcePlaywright library. In addition to waiting for the page to be rendered, it will auto attempt to detect a classic page on initial render, and automatically switch to a lightning page if one is detected.(#3387)CumulusCI now supports the
CustomIndexmetadata type.(#3391)CumulusCI now supports performing source transformations during the
deploytask, including find-and-replace of user-defined tokens. (#3383)Includes Snowfakery 3.3 with new datetime features and find_record optimization.
Issues Fixed
Fixed a bug when using blank dates in upserts and updates.(#3361)
Fixed an issue where committing changes to a repository above a certain size caused timeouts to occur. (#3379)
CumulusCI now uses the
defusedxmllibrary to more securely parse xml.(#3375)
3.66.0 (2022-09-29)¶
Changes
New Metadata ETL task
set_object_settingsto enable and disable settings on standard and custom objects (thanks @jlantz) (#3364)For Robot tests on the Firefox profile, we now accept all cookies to prevent lightning pages from failing to render due to cross-domain cookies. (#3366)
Improved the method that playwright-based tests use to wait for the browser to initialize (#3366)
The following Robot Framework keywords now automatically generate screenshots on failure:
Click related list button,Click related item popup link,Close modal,Current app should be,Field value should be,Get field value,Populate field,Populate lookup field, andWait until modal is closed. (#3370)CumulusCI now supports the following Metadata type:
AIApplicationConfig(#3368)CumulusCI now supports the following types from Net Zero Cloud’s Tooling API:
BldgEnrgyIntensityCnfg,StnryAssetEnvSrcCnfg,VehicleAssetEmssnSrcCnfg. (#3372)
Issues Fixed
A failure when calling
capture page screenshotno longer causes a Robot test to fail (#3366)Fixed an issue where the
cci --versioncommand failed to output the current version (#3367)A bug that prevented keywords decorated with
@capture_screenshot_on_failurefrom returning a value has been fixed. (#3370)Fixed a bug where requests were not being logged while running tasks or flows with the
--debugflag. (#3371)
3.65.0 (2022-09-16)¶
Changes
Improve logging and add error handling for Vlocity tasks by @prescod in (#3357)
3.64.0 (2022-08-18)¶
Changes
Support for upcoming Salesforce 240 Release in Robot by @boakley (#3321)
Issues Fixed
Fix crash with unusual Unicode characters in metadata on Windows running
update_package_xmlby @prescod (#3323)Fix Scratch org creation in latest sfdx by @prescod (#3334)
3.63.0 (2022-08-04)¶
Changes
CumulusCI can now validate MetaDeploy plans in cumulusci.yml by @jstvz in (#3298)
Sensitive service info is now masked in the
cci service infocommand - by @bethbrains in (#3295)Updated documentation for GitHub Actions framework by @davidmreed in (#3302)
New MetaData ETL Task for deploying remote site settings -
add_remote_site_settingsby @Br4nd0R in (#3303)New task for deploying remote site settings that are required by OmniStudio -
deploy_omni_studio_site_settingsby @Br4nd0R in (#3303)Added new robot keywords available when using the SalesforcePlaywright library; get current record id, wait until loading is complete and go to record home. These keywords work in a similar fashion to the existing keywords of the same name that are based on Selenium - by @boakley in (#3310)
Issues Fixed
Fixed two issues which prevented the
set_recently_viewedfeature from working by @prescod in (#3305)The GithubIssuesParser class will now fall back if issues are disabled by @davidmreed in (#3293)
3.62.0 (2022-07-21)¶
Changes
CumulusCI now supports pinning dependencies on other projects by @davidmreed in (#3270)
Add extract declarations concept to CumulusCI by @prescod in (#3285)
Make
delete_datatask freezable by @jstvz in (#3294)Omnistudio vlocity build tool wrapper tasks
vlocity_pack_exportandvlocity_pack_deployto support datapack export and deployments by @Br4nd0R in (#3296)
3.61.1 (2022-07-10)¶
Issues Fixed
Fix
metadeploy_publisherror caused by supported_orgs case-sensitivity (#3277)
3.61.0 (2022-07-09)¶
Changes
metadeploy_publishconsumes legal targets for supported orgs (#3239)Add update_profile support for record type layouts by (#3243)
Add
customkey to cumulusci.yml schema (#3238)Make OrgSettings also deploy objectSettings, if present (#3235)
Import persistent orgs from the SFDX keychain (#3253)
Speed up Snowfakery handling of small batch sizes (#3188)
Issues Fixed
Fix JWT audience for sandboxes (#3240)
Fixed a bug where scratch org attributes configured via cumulusci.yml were not taking effect. (#3209)
Correct FeatureParameterString to FeatureParameterDate (#3254)
No postinstall script for unlocked package builds (#3247)
3.60.0 (2022-06-09)¶
Changes
We added a new dependency resolution strategy,
unlocked. Like our existing dependency strategies using parallel 2GP package builds, this strategy installs parallel unlocked package builds. (#3223)We added the flows
build_unlocked_test_package,install_unlocked_commit, andqa_org_unlockedto support use of parallel unlocked packages. (#3223)We added a property,
is_survey_advanced_features_enabled, to the org_config entity available in when clauses. (#3149)Robot framework API and performance keywords have been moved into separate libraries. They are still automatically imported when using Salesforce.robot so it is not necessary to modify any existing test files. (#3216)
There are new robot framework keyword libraries with limited support for
Playwright <https://playwright.dev/>_ via therobotframework-browser library <https://robotframework-browser.org/>_. To use, import the resource filecumulusci/robotframework/SalesforcePlaywright.robotinstead ofcumulusci/robotframework/Salesforce.robot. Note, Playwright is not yet supported by MetaCI. (#3216)cumulusci.robotframework.BaseLibrarycan be used when creating new libraries in order to get some useful properties (self.salesforce,self.salesforce_api,self.cumulusci, etc) (#3216)Snowfakery 3.2 is included, with the following changes
Snowfakery can now do random_reference to nicknames.
We removed some limitations on what Snowfakery can do with objects referenced through random_reference, especially using a.b.c.d syntax.
We added a unique option for random_reference to allow for 1-1 relationships across random references and no-duplicates many-to-many join relationships like Account->CampaignMember->Campaign
3.59.1 (2022-05-31)¶
Issues Closed
Fixed a regression relating to lookup of variables like
$project_config.repo_branch. Identified as a problem in thegithub_automerge_maintask, but potentially there might be other tasks that were broken and are fixed by this branch. (#3220)
3.59.0 (2022-05-26)¶
Changes
Setting
repo_urlin your project config is no longer required to runmetadeploy_publish. (#3200)Adds new commands
cci robot install_playwrightandcci robot uninstall_playwrightfor installing and uninstalling experimental support for the Robot FrameworkBrowserlibrary, which is based on Playwright. For more information see the section “Playwright Technology Preview” in the public documentation. (#3194)Programs using CumulusCI as a library may generate warnings when getting values from config objects. A new method
config.lookupis the preferred way to look up these values. (#3026)
3.58.0 (2022-05-16)¶
Changes
CumulusCI Robot Framework support has been tested on prerelease orgs (#3187)
Upgraded the Snowfakery dependency to version 3.1.0. When embedded in CumulusCI, Snowfakery can now do SObject Upserts. (#3195)
Issues Closed
Fix bug when setting the ‘options’ option in the robot task from the command line (#3173)
3.57.0 (2022-04-28)¶
Changes
Support
useraliasinOpen Test Browserfor connected orgs (#3169)
Issues Closed
More reliable way to find latest chronological release in GitHub (#3164)
Add IP Ranges Metadata ETL task (#3146)
3.56.0 (2022-04-07)¶
Changes
Added support for Lightning radiobuttons in the Robot keyword input form data. (#3142)
Issues Closed
Fixed an issue where CumulusCI was incorrectly merging task option overrides. (#3145)
3.55.0 (2022-03-24)¶
Changes
CumulusCI now provides an option to verify server certificates using root CA certs loaded from the system, instead of the default set of CA certs bundled with the Python requests library. This is considered experimental, so must be opted in by setting the
CUMULUSCI_SYSTEM_CERTSenvironment variable toTrue(#3114)Improvements to the custom locator strategy used by the Robot Framework keyword
input form datato find form fields and lightning components based on label text. This locator strategy (label:) is now up to 10x faster at finding non-lightning form components, and is able to find elements with more complicated labels (eg: labels with text inside of nested spans). (#3117)Fixed a bug that prevented the use of aliases for Robot Framework page objects.(#3120)
The Robot Framework keyword
input form datanow does a better job of working with non-lightning checkboxes. (#3122)
Issues Closed
Fixed an error that could occur when loading a project that uses very old flow syntax with tasks instead of steps. (#3118)
Fixed a bug when using
sourcesto access another project from a github branch, where the branch context was not available to branch-based dependency resolvers. (#3123)The
drop_missing_schemaoption was not respected by thesnowfakerytask. Now it is. (#3125)
3.54.0 (2022-03-10)¶
Changes
The
install_managedandupdate_dependenciestasks:Now support
apex_compile_typeandupgrade_typeoptions for performing Unlocked Package installations. (#3105)Accept the options
interactiveandbase-package-url-format, which pause the automation and wait for the user to confirm the list of packages to be installed. (#3093)
The
update_package_xmltask now supports new Slack metadata types (#3103)We added the ability to do Upserts during Data Loading (documentation). (#3099)
Robot Framework tests can now pass a locator when calling
Go To Pagefor one of our bulit-in page objects (Listing, Detail, Home), and the keyword will wait until that locator is visible. This is mostly useful for custom pages where you need to wait for an iframe or custom component to be available. (#3098)We improved our caching mechanisms to better handle projects whose cross-project sources themselves have cross-project sources. (#3092)
Issues Closed
Fixed a bug running the
snowfakerytask in parallel mode with orgs connected using a Connected App. (#3109)
3.53.0 (2022-02-24)¶
Critical Changes
CumulusCI now ships with Snowfakery 3.0. See the Snowfakery release notes. Snowfakery 3.0 ships with opt-in features that will become the default in June 2022; please test your recipes now with
snowfakery_version: 3to ensure compatibility.
Changes
CumulusCI now has an
update_datatask that allows updates to existing datasets, in coordination with Snowfakery 3.0.Orgs connected using
cci org connectnow keep track of whichconnected_appservice was used to connect them, and will use the sameconnected_appservice when getting a fresh access token, even if it isn’t currently the defaultconnected_appservice. This makes it easier to use CumulusCI with multipleconnected_appservices. (Orgs that were connected before this update will continue to use the defaultconnected_appservice.)When connecting a custom
connected_appservice, a defaultlogin_urlcan be specified (to use a login URL other than https://login.salesforce.com when connecting orgs using thisconnected_appservice).The
deploy_marketing_cloud_packagetask now utilizes the new API endpoint for deployments.CumulusCI commands are more resilient in the face of corrupted or impossible to decode org config files.
We added documentation about managing Robot Framework locators
CumulusCI will now warn Windows users if long pathname support is not set up correctly.
Issues Closed
Fixed a bug in the JSON format output of cci service list –json
3.52.0 (2022-02-03)¶
Changes
Flow steps can now be replaced with the same syntax for all step types! (Current step types are: ‘task’ or ‘flow’). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override##replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to
Nonewhen replacing with a step of a differing type. (#3043)Whenever possible, while running the
robot_libdoctask libdoc generates relative pathnames when creating CSV output (#3058)Added a new option
--previewto therobot_libdoctask. When set totrueit automatically opens a browser window to the generated documentation. (#3057)The robot keyword
Locate element by labelhas been removed from the Salesforce.py library. This wasn’t designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the formlabel:<text>(eg:label:First Name) (#3048)Updated to Snowfakery 2.5.0
If you have Python code that is importing CumulusCI’s config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
Issues Closed
Fixed an issue where overriding flow steps was not working as documented. (#3043)
We fixed a bug where the
Run TaskandRun Task Classrobot keywords throw an error likeAttributeError: module 'robot.api.logger' has no attribute 'log'in rare cases (#3053)Fixed a bug in the snowfakery task which caused Unique IDs to not always be actually unique. (#3059)
3.51.1 (2022-01-25)¶
Issues Closed
We fixed an issue that could cause
create_package_versionto fail when theversion_baseoption is set tolatest_github_releaseand the latest GitHub release is a 1GP package version.
3.51.0 (2022-01-20)¶
Changes
The
cci flow doccommand now only includes CumulusCI’s standard flows unless the--projectoption is specified. (#3033)The
run_teststask now has arequired_per_class_code_coverage_percentwhich ensures that every class in your project meets the code coverage level specified. (#3027)Marketing Cloud tasks:
Added the
marketing_cloud_get_user_infotask to retrieve user information from the Marketing Cloud REST APIuserinfoendpoint. (#3039)The
marketing_cloud_create_usertask now creates an unlocked user with a notification email address so that it is possible for the user to log in. This task also has a new option,activate_if_existing, which can be set totrueto ensure that if the user already exists in an inactive state, it will be activated. (#3040)
Issues Closed
Fixed an issue preventing step-level preflight checks from working correctly in MetaDeploy when run in a cross-project flow. (#3034)
The
github_parent_pr_notestask now handles child pull requests with an empty body. (#3038)The
metadeploy_publishtask now displays a clear error message if you supply the wrong API URL for MetaDeploy. (#3034)The
cci service default --projectcommand presents a better error message when called outside of a project directory. (#3037)Fixed a bug where the
cci flow doccommand would break when using cross-project flows. (#3033)
3.50.0 (2022-01-06)¶
Changes
Robot keywords have been updated to support the Spring 22’ release. (#3021)
Using channel declarations in
load.yml, users can now do synthetic data loads across multiple user accounts at once. This is faster for some very large orgs. (#3016)
Issues Closed
Added a missing image to the “Windows Install Steps” portion of the docs. (#3013)
Fixed a bug that prevented
Get webelementsfrom returning an empty list if the locator was a custom locator created via theregister_locatorsfunction ofcumulusci.robotframework.locator_manager. (#3004)Fixed a bug that prevented the locator
SF:object.button:Assign Reviewersfrom working properly. (#3002)Fixed an issue where the
--jsonflag was not outputting properly formattedJSONwith thecci task listcommand. (#3011)
3.49.0 (2021-12-09)¶
Critical Changes
Python versions 3.6 and 3.7 are no longer supported. Please ensure you have Python version 3.8, 3.9, or 3.10. (#2959)
The
dx_convert_fromtask now uses a custom Python task class instead ofcumulusci.tasks.sfdx.SFDXBaseTask. In most cases this will have no visible impact, but if you have customized this task config to change the command option, make sure you have also explicitly set itsclass_pathtocumulusci.tasks.sfdx.SFDXBaseTask. (#2981)
Changes
You can now get the CumulusCI version with
cci --version. The output is the same as thecci versioncommand. (#2974)A new feature has been added to the
robot_libdoctask. You can now use--f csvto generate a CSV file with all of the keywords. (#2985)New keywords
Select RowsandUnselect Rowshave been added to the robot Listing page object (#2995)Queries passed to the
SOQL Querykeyword can now span multiple lines. (#3006)
Issues Closed
Fixed an issue where deleted components could still deploy into persistent orgs. (#2981)
3.48.2 (2021-11-16)¶
Fixed a regression which broke
cci project initin CumulusCI 3.48.0 and 3.48.1. (#2986)
3.48.1 (2021-11-12)¶
Issues Closed
Fixed a packaging issue which caused an error when installing on systems without a C compiler.
3.48.0 (2021-11-11)¶
Critical Changes
CumulusCI will be dropping support for Python 3.6 and 3.7 within the next few releases. Please ensure you’re running Python 3.8 or above.
Changes
We added a new command,
cci plan info. Similar tocci task info, this command displays detailed information about a MetaDeployplan, and includes a--messagesoption to display user-facing text. (#2946)Improved logging to show reduced timestamps, and provide some syntax highlighting of output. (#2941)
Snowfakery 2.2 is now included with CumulusCI. New features include unique IDs and Numeric Counters. (#2962)
Issues Closed
We added an improved error message when
metadeploy_publishis passed a lightweight tag. (#2955)Adjusted a check for .lightning. domains in the
cci org connectcommand. (#2970)We fixed an issue where stacktraces for some Apex test failures were truncated. (#2961)
3.47.0 (2021-10-28)¶
Changes
Added a
cci plan listcommand for displaying a list of MetaDeploy plans (#2940)Task options can now be marked as “sensitive”. These task options that will be obfuscated when displayed at the beginning of each task in a flow. (#2939)
Improved error message when uninstall-packaged-incremental is run in an SFDX-format project without converting to Metadata API format first (#2929)
Improved error messaging for multiple scenarios where tasks are improperly configured in
cumulusci.yml. (#2923)We added a new task create-blank-profile that can be used to create a new profile from scratch without any permissions enabled. (This new task requires a Winter 22 Org or API 53.0) (#2908)
We’ve added a user-friendly error message when installing a package using
security_type“PUSH” with a 04t Package Version ID. (#2935)
3.46.0 (2021-10-14)¶
Critical Changes
Backwards incompatibility: the robot task option
debughas been renamed torobot_debug. (#2909)
Changes
CumulusCI now has a schema published here. This is primarily intended to be use for enabling linting in VS Code, but could be used for any schema-aware editor or any validation purpose. (#2902)
We added a new task create-blank-profile that can be used to create a new profile from scratch without any permissions enabled. (#2908)
Manually creating a Personal Access Token and pasting it into the CLI is no longer required to connect a GitHub service. Instead, CumulusCI now supports GitHub’s device authentication flow, allowing you to authenticate via browser using a temporary device code. (#2911)
cci service infofor a github service now displays expiration dates for GitHub personal access tokens, if set. (#2912)Improved error messaging for multiple scenarios where tasks are improperly configured in
cumulusci.yml. (#2923)
Issues Fixed
Fixed a bug where connecting a GitHub service with
cci service connectwas failing silently. (#2888)Fixed an issue where MetaDeploy steps using the old
filename_tokenandnamespace_tokenoptions could not be used. (#2914)
3.45.0 (2021-09-30)¶
Changes
Updated the
deploy_marketing_cloud_packagetask for compatibility with the October 2021 release of Marketing Cloud. (#2899)The
--max-linesoption on thecci error infocommand has been removed. (#2895)
Issues fixed
Removed the unused
--skipoption for thecci flow runcommand. (#2884)Flow descriptions no longer generate a warning. (#2885)
We changed how the output from some commands and tasks are displayed in the CLI. (#2887)
Fixed a bug in freezing the
load_datasettask options for MetaDeploy. (#2900)The marketing cloud
deploytask now properly exits when a result status ofFATAL_ERRORis returned. (#2897)We fixed a regression in the
push_listtask that affected 2GP push upgrades (#2898)
3.44.1 (2021-09-17)¶
Issues Fixed
We fixed a regression that resulted in upload failures for 2GP packages that extend 1GP packages (closes ##2880).
3.44.0 (2021-09-16)¶
Changes
CumulusCI uses package version Ids from 1GP releases wherever available, reducing the need to install 1GP packages in an org to build 2GP dependencies. (#2832)
We added
metadata_package_idandversion_idoptions to allow passingMetadataPackage(prefix 033) andMetadataPackageVersion(prefix 04t) IDs to the push upgrade tasks. (#2837)cci flow infowill now output all flow options defined. (#2845)We improved error messages for incorrect data mapping files (#2831).
The
snowfakerytask supports specifying theloading_rulesoption (#2861)The
snowfakerytask supports recipe options being supplied to recipes using therecipe_optionsoption (#2861).
Issues Fixed
We fixed some errors in the documentation (#2854)
We fixed an issue causing CumulusCI to fail to install releases that contain an Unlocked Package without a namespace. (#2851)
We added handling for issues that occur when running the
generate_dataset_mappingtask for very large orgs (#2860).We fixed a regression in using cross-project sources in MetaDeploy installers (#2875).
3.43.0 (2021-09-02)¶
Critical Changes
We now support all package installation options for the
update_dependenciesandinstall_managedtasks, includingactivate_remote_site_settings,security_type,name_conflict_resolution, andpassword(password not available forupdate_dependencies). (#2811)We also fixed a minor inconsistency in defaulting the
activate_remote_site_settings(or formerlyactivateRSS) option. Projects that define custom tasks based on theInstallPackageVersionclass should ensure they explicitly set theactivate_remote_site_settingsoption, or accept the new default of True.MetaDeploy install plans now do not freeze defaulted package install options. If your install plans are dependent on specific install options, we recommend explicitly specifying them. Install plans without explicit options will use the defaults at the time of execution.
Changes
The
sourcesfeature, which allows CumulusCI projects to consume automation from other projects, now supports specifying aresolution_strategy, just like dependencies. Sources can now resolve to the same GitHub refs as corresponding dependencies, including branch matching. The default behavior is to use theproductionresolution strategy. (#2807)Added several new tasks for configuring Marketing Cloud:
marketing_cloud_create_subscriber_attribute,marketing_cloud_create_user, andmarketing_cloud_update_user_role. (#2838)In the mapping file for the
load_datasettask, thebatch_sizecan now be specified for Bulk API steps in addition to REST API steps. (#2813)The
snowfakerytask now supports theignore_row_errorsoption to continue loading even if there are row errors. (#2819)We made significant updates to the documentation for Robot Framework. (#2834, ##2847)
We improved option validation for the
add_page_layout_fieldstask. (#2828)
Issues Fixed
Fixed handling of timezones when the
start_timeoption is specified for the push tasks. (#2814)Fixed the
deploy_marketing_cloud_packagetask to handle changes to the Marketing Cloud API. (#2816)Fixed an issue where MetaDeploy install steps that used 04t package version Ids, including 2GP installations, were frozen with incorrect titles. (#2817)
Fixed an issue causing 2GP commit-status builds to fail when the local Git repository has a detached HEAD (#2818)
Fixed a bug in the
dry_runoption for themetadeploy_publishtask where explicitly setting the option toFalsedid not disable the dry run. (#2836)Improved the error message shown by the
load_datasettask if a table is missing from the dataset. (#2813)Improved the warning message shown when CumulusCI can’t encrypt org and service config files. (#2839)
Internal Changes
CumulusCI has improved infrastructure for its own integration tests. (#2783)
Filing a CumulusCI issue on GitHub now presents a form to enter details. (#2829)
Added a linter to ensure consistent formatting of YAML files within the CumulusCI codebase. (#2844)
3.42.0 (2021-08-19)¶
Critical Changes
The
github_releasetask now requires thetag_prefixoption to be passed, because for 2nd-generation packages we can’t tell from the version number whether it is a beta or not. We’ve updated the standard release flows to set thetag_prefixappropriately, but if you have custom flows using this task you will need to update them. (#2792)In order to run the
github_copy_subtreetask for a specific package version, you must now use thetag_nameoption instead of theversionoption. Using theversionoption set tolatestorlatest_betais deprecated; it’s preferred to pass these values in thetag_nameoption instead. (#2792)
Changes
The
uninstall_packaged_incrementaltask now defaults to ignoring non-deletableCustomObjectTranslationmetadata. If your project customizes theignore_typesoption onuninstall_packaged_incremental, we recommend you addCustomObjectTranslationto this option. (#2790)
Issues Fixed
Fixed an issue where bulk job results were being miscounted. (Thanks @sfdcale!) (#2789)
Fixed an issue where GitHub tags for a 2GP package would always include the “release” prefix (even for Beta package versions). (#2792)
3.41.0 (2021-08-05)¶
Changes
We added a new Metadata ETL task, add-page-layout-fields, that allows adding fields to existing layouts. (#2766)
We added a task to enable an Einstein prediction: enable-einstein-prediction (thanks, @erikperkins!) (#2778)
We added standard flows for releasing unlocked packages: release-unlocked-beta] and release-unlocked-production (#2768)
We added documentation for using CumulusCI to build managed 2GP packages, unlocked packages, and extending NPSP and EDA with 2GP packages. (#2768)
Contributions to CCI now require verification by isort, which ensures consistency in the order that imports are used. (#2770)
CumulusCI now supports deploying unmanaged dependencies in SFDX source format. (#2735)
The create-package-version] task now handles dependencies that use a
zip_url. (#2735)Updates to Github Actions configuration documentation. Thanks @Julian88Tex (#2773)
CumulusCI now automatically recognizes services and orgs configured via environment variables. See the docs for more details. (#2676 and ##2776)
We’ve updated the Push Upgrade tasks (push-list, push-sandbox, etc) task option
start_timeto accept ISO-8601 formatted datetimes. (#2769)You can now specify “sandbox”: true on a
CUMULUSCI_ORG_*variable in headless environments to indicate that the org you want to connect to is a sandbox. when connecting sandbox orgs in a headless environment. (#2753)
Issues Closed
Fixed an issue where scratch orgs failed to be deleted in CI environments. (#2676)
Fixed an issue where deleting an org failed to mark the org as deleted on CumulusCI’s keychain. (#2676)
Fixed an issue where CumulusCI would fail on Linux distributions that were incompatible with the
keyringpackage. (#2676)We fixed an issue causing the release-2gp-production flow to fail with a dependency parsing error. (#2767)
Fixed a couple issues with connecting CumulusCI to sandboxes using enhanced domains. (#2753 and ##2765)
Fixed a bug where the github_release task was not marking the “This is a pre-release” checkbox for beta releases. (#2788)
3.40.1 (2021-07-22)¶
Issues Closed
Fixed an issue where a missing dependency was causing the homebrew installer formula to break.
3.40.0 (2021-07-22)¶
Critical Changes
The
create_package_versiontask no longer creates Unlocked Packages from theunpackaged/preandunpackaged/postdirectories of dependencies, or localunpackaged/predirectories by default. This behavior is now opt-in via thecreate_unlocked_dependency_packagesoption, which defaults to False. Projects using the old default behavior must explicitly set this option. We believe the new behavior is a more sane default for most 2GP projects. (#2741)
Changes
The
add_standard_value_set_entriestask now supports value sets forLeadStatus. (#2695, with thanks to @naicigam)We updated the default API version to 52.0. (#2740)
Issues Closed
Fixed an issue where the the built-in connected app was not accessible when running CumulusCI in a headless environment. (#2737)
The
create_package_versiontask now supportsobjectSettingsin the org definition file. (#2741)We fixed issues in working with files containing Unicode characters on some Windows systems when using source-tracking commands. (#2739)
Fixed a bug where the
anon_apextask had option text that was missing spaces. (#2736)
3.39.1 (2021-07-08)¶
Changes:
Fix a bug with the integration of CumulusCI and the new SOQLQuery Feature
3.39.0 (2021-07-08)¶
Changes:
A new
snowfakerytask with better usability and multi-processor support. Look at the CumulusCI docs to learn the new syntax: https://cumulusci.readthedocs.io/en/stable/data.html#generate-fake-data (#2705)CumulusCI now uses Snowfakery 2.0, with various new features, especially the ability to query into orgs. More information: https://github.com/SFDO-Tooling/Snowfakery/releases/tag/2.0 (#2705)
We improved our Robot documentation so that it’s possible to link to keyword documentation instead of having to download it locally (#2696)
CumulusCI uses a new port (7788) for the built-in connected app to lessen the chances that the port is in use. (#2698)
CumulusCI now checks if the port associated with a callback URL/redirect URI is in use during OAuth2 flows, and if so, raises a more friendly error. (#2698)
The
generate_data_dictionarytask now includes Custom Settings, Custom Metadata Types, and Platform Events. (#2712)The
generate_data_dictionarytask now excludes any schema with visibility set to Protected. This behavior can be turned off (including protected schema) with theinclude_protected_schemaoption. (#2712)The
generate_data_dictionarytask now parses object and field metadata anywhere in a Salesforce DX release other than in theunpackaged/directory tree. (#2712)Builds that install feature-test 2GP packages now present a cleaner error message when the current commit is not found on GitHub. (#2713)
SFDX and CumulusCI both support noancestors as a Scratch org config option but CumulusCI generated a warning if users tried to specify the option in cumulusci.yml. (#2721)
Issues closed:
Fixed issue where CumulusCI did not correctly convert a package version specified as a number in YAML to a string. This now raises a warning. (#2692)
Fixed a bug where OAuth errors were not reported in detail. (#2694)
Fixed an issue where CumulusCI did not grant permissions to Custom Tabs when running
update_admin_profilewithout a custompackage.xml. Projects that use a custompackage.xmlwithupdate_admin_profileshould update their manifest to include aCustomTabwildcard for the same outcome. (#2699)Fixed an issue where the
dx,dx_push, anddx_pulltasks did not refresh the org’s access token. (#2703)Fixed issues in the
generate_data_dictionarytask that resulted in failures when processing fields with blank Help Text or processing standard fields. (#2706)Fixed an issue preventing
generate_data_dictionaryfrom working with four-digit (1.0.0.0) 2GP version numbers. (#2712)Fixed an issue causing
release_2gp_betato fail to create a GitHub release with a dependency-parsing error. (#2720)
3.38.0 (2021-06-24)¶
Changes:
The built-in connected app that CumulusCI uses by default is now visible in the output of the
cci service listcommand. This makes it possible to switch back and forth between this connected app and another one as the current default when multiple connected_app services are configured. The built-in connected_app service has the namebuilt-inand cannot be renamed or removed. (#2664)The
generate_data_dictionarytask includes a new option,include_prerelease. If set toTrue, CumulusCI will include unreleased schema in the data dictionary from the current branch on GitHub, with the version listed as “Prerelease”. (#2671)Added a new task,
gather_release_notes, which generates an HTML file with release notes from multiple repositories. (#2633)The
deploy_marketing_cloud_packagetask includes a new option,custom_inputs, which can be used to specify values to fill in for inputs in a Marketing Cloud package. (#2683)Mappings for the
extract_datasettask can now specify asoql_filterto restrict which records are extracted. Thanks @sfdcale (#2663)Robot Framework: The
Scroll Element Into Viewkeyword in the Salesforce library now scrolls the center of the element into view rather than the top. (#2689)
Issues closed:
Fixed a bug where CumulusCI could not parse the repository owner and name from an ssh git remote URL if it used an ssh alias instead of
github.com. (#2684)Fixed a bug where
cci service info <service_type>would displayNoneas the name for the default service if no name was provided. (#2664)Fixed a missing dependency on the
contextvarsPython package in Python 3.6.
3.37.0 (2021-06-10)¶
Changes
The
install_managedtask now supports 2GP releases (#2655).We changed the behavior of the
release_2gp_betaflow to always upload a package version, even if metadata has not changed (#2651).We now support sourcing install keys for packages from environment variables via the
password_env_namedependency key (#2622).
Robot Framework
We upgraded SeleniumLibrary to 5.x (#2660).
We added a new keyword “select window” to Salesforce library, to replace the keyword of the same name which was renamed in SeleniumLibrary 5.x to ‘switch window’. We will be removing this keyword in a future release; tests should use ‘switch window’ instead.
Issues Closed
We corrected some JavaScript issues that were occurring with Chrome 91. (#2652)
We fixed a bug impacting the
generate_data_dictionarytask when used with dependencies (#2653).We fixed an issue causing
sfdxcommands that had options with spaces to fail to execute on Windows (#2656).We fixed an issue causing the creation of incorrect 2GP beta tags (#2651).
3.36.0 (2021-05-27)¶
Changes
Added the option
tag_prefixto thegithub_releasetask. This option can be set to specify what prefix you would like to use when CumulusCI creates a release tag for you in GitHub. (#2642)The
deploy_marketing_cloud_packagetask has been updated to match changes to the Marketing Cloud Package Manager API. It also now raises an exception if the deployment failed. (#2632)
Robot Framework
Improved the output of the
robot_libdoctask. (#2627)
Data generation with Snowfakery:
Updated to Snowfakery 1.12 (#2538)
Issues Closed
Fixed an issue where flow reference documentation was rendering with an error. (#2646)
CumulusCI will now remove orgs when the
--delete-orgoption is passed tocci flow run, even if an error occurs while running the flow. (#2644)Fixed a bug where beta tags created via the
release_2gp_betaflow were not receiving the proper tag prefix. (#2642)Fixed namespace injection for filenames with a
___NAMESPACE___token in sfdx format. (#2631) (Thanks @bethbrains)Fixed a bug in
cci org connectwhere the--sandboxflag was directing users to login atlogin.salesforce.cominstead oftest.salesforce.com. (#2630)Fixed a regression where the
skipkey for a dependency could no longer be specified as a single string instead of a list. (#2629)Fixed a regression in freezing the
deploy_pre/deploy_posttasks for MetaDeploy install plans. (#2626)Fixed bugs in the
deploy_marketing_cloud_packagetask’s payload construction. (#2620, ##2621)
3.35.0 (2021-05-13)¶
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_dependenciestask now guarantees to resolve unpackaged metadata directories (subdirectories ofunpackaged/preandunpackaged/post) in alphabetical order, matching the behavior ofdeploy_preanddeploy_post.unpackaged/pre/barwill 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_cloudservice 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_clientservice takes information for an individual OAuth2 client which can then be used in place of the default client. This currently applies only to themarketing_cloudservice. 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_cloudservice (see above). Note that successfully deploying a package using this task may require permissions that are not generally available. (#2602)The
install_managedandinstall_managed_betatasks now take no action if the specified package is already installed in the target org. (#2590)The
cci org listcommand can now output inJSONformat by passing it the--jsonflag. (#2593)
Issues Closed
Fixed an issue parsing
cumulusci.ymlfiles that contained Unicode characters on Windows. (#2617)Fixed an issue in the
github_copy_subtreetask where CumulusCI would silently generate incorrect or truncated commits when a directory was passed to theincludetask option. (#2601)The
deploy_preanddeploy_posttasks avoid warnings by freezing installer steps that match current expectations. (#2589)
3.34.1 (2021-04-30)¶
Issues Closed
Fixed a regression in the
load_datasettask where some sObjects could not be loaded without explicitly turning off the newset_recently_viewedoption.
3.34.0 (2021-04-29)¶
Critical Changes:
If you have custom flows that utilize the
github_releasetask, they will need to be updated to include thepackage_typeoption (which is required). (#2546)
Changes:
The
github_releasetask now has apackage_typeoption which is included in the information written to GitHub release tags. The following standard library “release” flows have been updated with hardcoded values (either1GPor2GP) for this option:: -
release_beta(1GP) -release_production(1GP) -release_2gp_beta(2GP) -release_2gp_production(2GP)(#2546)
The
update_dependenciestask now supports apackages_onlyoption, which suppresses the installation of unpackaged metadata dependencies. This option is intended to support building update-only or idempotent installers. (#2587)The
github_automerge_maintask has a new option,skip_future_releases, which can be set toFalseto 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_viewedto theload_datasettask 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_dependenciestask can now consume 2GP releases in upstream repositories, provided they’re stored in release tags as generated by CumulusCI. (#2557)The
extract_datasetandload_datasttasks 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_versiontask 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_maintask when using a branch prefix that doesn’t contain a slash. (#2582)Fixed logic in the
push_sandboxandpush_alltasks 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 (2021-04-20)¶
Changes:
The
create_package_versiontask now accepts an--ancestor-idoption 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_releaseto look up the 04t Id of the project’s most recent release on GitHub. (#2540)
Issues closed:
Fixed a regression where the
release_betaflow would throw an error if the project has unmanaged github dependencies. (#2566)Fixed a regression where the
cci service connectcommand 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.ymlvalidation warnings. (#2567)
3.33.0 (2021-04-19)¶
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_dependenciestask no longer supports uninstalling managed packages in a persistent org as part of the dependency installation process.The
update_dependenciestask no longer supports theallow_neweroption, which is always True.The install order of
update_dependencieschanges slightly where multiple levels of upstream dependency haveunpackaged/premetadata. Where previously one package’sunpackaged/premight be installed prior to its own upstream dependency,unpackaged/prewill 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/trialwould 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__dependenciessection incumulusci.ymlno 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 listyou 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.
A validator now checks
cumulusci.ymland 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_xmlcan be specified as either--clean_meta_xmlor--clean-meta-xmlor-o clean-meta-xml(#2504)Adjustments to existing tasks:
The
update_package_xmltask now supports additional metadata types. (#2549)The
push_sandboxandpush_alltasks now use the Bulk API to query for subscriber orgs. (#2338)The
push_sandboxandpush_alltasks 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_aliasoption for theassign_permission_sets,assign_permission_set_groups, andassign_permission_set_licensestasks now accepts a list of user aliases, and can now create permission assignments for multiple users with a single task invocation. (#2483)The
commandtask now sets thereturn_valuesto a dictionary that contains the return code of the command that was run. (#2453)
Data generation with Snowfakery:
Updated to Snowfakery 1.9 (#2538)
Robot Framework:
The
run taskkeyword now includes all task output in the robot log instead of printing it to stdout. (#2453)Documented the use of the options/options section of CumulusCI for the
robottask. (#2536)
Changes for CumulusCI developers:
Tasks now get access to the
--debug-modeoption and can output debugging information conditional on it. (#2481)
cci org connectcan now connect to orgs running in an internal build environment with a different port. (#2501, with thanks to @force2b)
Issues Closed:
The
load_custom_settingstask now resolves a relativesettings_pathcorrectly when used in a cross-project flow. (#2523)Fixed the
min_versionoption for thepush_sandboxandpush_alltasks to include themin_versionand not only versions greater than it. (#2338)
3.32.1 (2021-04-01)¶
April Fool’s! This is the real new release, because there was a packaging problem with 3.32.0.
3.32.0 (2021-04-01)¶
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_releasetask now includes the package version’s 04t id in the message of the tag that is created. (#2485)The
promote_package_versiontask now defaults to promoting the package version corresponding to the most recent beta tag in the repository, ifversion_idis 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)
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, andactionparameters 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 replacePopulate Form. (#2496)Added a new keyword,
Locate Element by Label, for finding form inputs using their label. (#2496)Added a custom locator strategy called
labelwhich usesLocate Element By Label(e.g.label:First Name). (#2496)Added two new options to the robot task:
orderingandtestlevelsplit. These only have an effect when combined with theprocessesoption to run tests in parallel.
Issues Closed:
The
cci org importcommand 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 (2021-03-18)¶
Changes:
It is now possible to pass the
--noancestorsflag to sfdx when creating a scratch org by settingnoancestors: Truein the scratch org config incumulusci.yml. Thanks @lionelarmanet (#2452)The
robot_outputdirreturn value from therobottask is now an absolute path. (#2442)New tasks:
get_available_permission_sets: retrieves the list of available permission sets from an org. (#2455)promote_2gp_package: will promote aPackage2Versionto the “IsReleased” state, making it available for installation in production orgs. (#2454)
Snowfakery 1.7:
Adds support for Salesforce Person Accounts.
Issues Closed:
cci project initno longer overwrites existing files. If files already exist, it displays a warning and outputs the rendered file template. (#1325)
3.30.0 (2021-03-04)¶
Critical changes:
We are planning to remove functionality in CumulusCI’s dependency management in a future release.
The
update_dependenciestask will no longer support uninstalling managed packages in a persistent org as part of the dependency installation process.The
allow_neweroption onupdate_dependencieswill be removed and always be True.The
project__dependenciessection incumulusci.ymlwill 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_newerand 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 browsercommand now has a--pathoption to open a specific page and a--url-onlyoption 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 (2021-02-18)¶
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_typeschecks for existing Record Types. ##2371, thanks @ClayTomerlinget_assigned_permission_setschecks the current user’s Permission Set Assignments. ##2386
The
generate_package_xmltask now supports the Muting Permission Set metadata type. ##2382The
uninstall_packaged_incrementalanduninstall_packagedtasks now support adry_runoption, which outputs the destructiveChanges package manifest to the log instead of executing it. ##2393Robot Framework:
The
Run Taskkeyword now uses the correct project config when running a task from a different source project. ##2391The SalesforceLibrary has a new keyword,
Scroll Element Into View, which is more reliable on Firefox than the keyword of the same name in SeleniumLibrary. ##2391
Issues closed:
Fixed very slow
cci org connecton Safari. ##2373Added 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
3.28.0 (2021-02-04)¶
Changes:
Added a new task,
composite_request, for calling the Composite REST Resource. ##2341The
create_package_versiontask 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_packageflow now uses this option to create a package version with the minor version incremented from the most recent 1gp release published to github. ##2357The
create_package_versiontask now supports setting a post-install script and uninstall script when creating a managed package version, by setting thepost_install_scriptanduninstall_scriptoptions. By default, these options will use the values ofinstall_classanduninstall_classfrom thepackagesection ofcumulusci.yml. ##2366Updated to Snowfakery 1.5.
Robot Framework:
The
Click related list buttonkeyword 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. ##2356The
Click modal buttonkeyword now attempts to find the given button anywhere on the modal rather than only inside aforce-form-footerelement. ##2356
Issues closed:
Robot Framework:
Custom locators can now be used with keywords that expect no element to be found (such as
Page should not contain). This previously resulted in an error. ##2346Fixed an error when setting the
tagstatexcludeoption for therobottask. ##2365
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_typestask 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 ##2323Allow 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 (2021-01-08)¶
Changes:
CumulusCI now reports how long it took for flows to run.
Flows
ci_featureandci_feature_beta_depsnow only run thegithub_automerge_featuretask if the branch begins with the configured feature branch prefix.Running the
deploytask with thepathoption set to a path that doesn’t exist will log a warning instead of raising an error.When the
ci_feature_2gpandqa_org_2gpflows 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 ci-feature-2gp or qa-org-2gp flow runs on a release branch (starting with
prefix/NNN, whereprefixis the feature branch prefix andNNNis 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_settingstask 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.xmlentries for Metadata API-format projects that include__mocks__or__tests__LWC directories.Fixed the
update_dependenciestask 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_datein 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_datasettask 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.
3.25.0 (2020-12-10)¶
Changes:
New tasks:
assign_permission_set_groupsassigns Permission Set Groups to a user if not already assigned.assign_permission_set_licensesassigns Permission Set Licenses to a user if not already assigned.
New preflight checks for use with MetaDeploy install plans:
check_enhanced_notes_enabledchecks if Enhanced Notes are enabledcheck_my_domain_activechecks if My Domain is active
The
github_copy_subtreetask 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_typestask 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 beNew keyword
Modal should show edit error for fieldsto check form field error notifications in Spring ‘21Adjusted
Get field valueandSelect dropdown valuefields to work in Spring ‘21
Command line improvements:
The various
cci orgcommands now accept an org name with the--orgoption, for better consistency with other commands. Specifying an org name without--orgalso still works.Running
cci org defaultwithout specifying an org name will now display the current default org.
Org configs now have properties
org_config.is_multiple_currencies_enabledandorg_config.is_advanced_currency_management_enabledwhich can be used to check if these features are enabled.The
MergeBranchOldtask, which was previously deprecated, has now been removed.
Issues closed:
Fixed the
update_dependenciestask to handle automatic injection of namespace prefixes when deploying an unpackaged dependency.Fixed the
querytask, which was completely broken.Fixed the
connected_apptask to pass the correct username to sfdx. Thanks @atrancadorisFixed the display of task options with an underscore in
cci task infooutput.Fixed a confusing warning when creating record types using Snowfakery. (#2093)
Improved handling of errors while deleting a scratch org.
3.24.1 (2020-12-01)¶
Issues Closed:
Fixed a regression that prevented running unmanaged flows on persistent orgs, due to the use of the
include_betaoption while installing dependencies, which is not allowed for persistent orgs. We changed theupdate_dependenciestask to ignore the option and log a warning when running against a persistent org, instead of erroring.
3.24.0 (2020-11-30)¶
Critical Changes:
The flows
dev_org,dev_org_namespaced,qa_org,ci_feature, andinstall_betanow run theupdate_dependenciestask with theinclude_betaoption enabled, so dependencies will be installed using the most recent beta release instead of the most recent final release. Thebeta_dependenciesflow is no longer used and is considered deprecated.The flows
ci_feature_beta_depsanddev_org_beta_depsare now deprecated and should be replaced by their default equivalents above.The
ci_feature_2gpflow has been changed to useconfig_apextestinstead ofconfig_managedto avoid configuration steps that are unnecessary for running Apex tests. This means that in order forci_feature_2gpto work,config_apextestmust 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 thepasswordfield, it will be transparently migrated totoken. If you were specifying--passwordon the command line when running this command, you need to switch to--tokeninstead.Removed the old
cumulusci.tasks.command.SalesforceBrowserTesttask class which has not been used for some time.
Changes:
Added a standard
qa_org_2gpflow, which can be used to set up a QA org using a 2nd-generation package version that was previously created using thebuild_feature_test_packageflow. This flow makes use of theconfig_qaflow, which means thatconfig_qamust 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_waittask can now wait for Queueable Apex jobs in addition to batch Apex.The
custom_settings_value_waittask 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.
Robot Framework:
In the Robot Framework Salesforce resource, the
Open Test Browserkeyword now accepts an optionaluseraliasargument 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.
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_datasettask in Windows.Fixed a bug where pressing
Ctrl+Cwhile runningcci org connectin Windows did not exit. (#2027)Fixed a bug where deploying an LWC component bundle using the
deploytask did not include files in subfolders.Fixed the
deploytask so that deploying an empty metadata directory does not error.Fixed a bug where the
namespace_injectoption 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
robottask as a cross-project task could not load Robot Framework libraries from the other project.
3.23.0 (2020-11-12)¶
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_unmanagedflow now deploys sfdx-formatted metadata using the Metadata API rather than the sfdxforce:source:pushcommand. 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_orgoption for theupdate_dependenciestask, which was not functional.We added support for including SOQL where-clauses
Salesforce QueryRobot keyword via thewherekeyword argument.The
create_package_versiontask can accept astatic_resource_pathoption.The FindReplace task now has a
replace_envoption which, if true, will interpret thereplaceoption 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_datatask 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_orgoption enabled did not actually add the namespace prefix unless themanagedoption was also enabled.We fixed an issue that resulted in the
batch_sizeoption in a data mapping file being ignored.
3.22.0 (2020-10-29)¶
Changes:
We added support for using Robot keywords from other projects that are included as
sources.The
suitesoption of the robot task can now take a list of suite paths. Paths can include a prefix representing a remote repository as defined by thesourcesconfiguration option (eg:-o suites npsp:robot/Cumulus/tests/api)The robot task has a new
sourcesoption to work in conjunction with the globalsourcesoption to allow the use of keywords and tests from other repositories.When running the
robottask, the folder containing downloaded repositories via thesourcesoption are added toPYTHONPATHso that robot tests can find library and resource files in those repositories
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_packageflow now creates a 2GP package version with the “skip validation” option turned on.github_automerge_mainnow 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.xmlmanifests 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 (2020-10-19)¶
Issues closed: - Added a workaround for a slow query error while looking up installed packages in Winter ‘21 orgs.
3.21.0 (2020-10-15)¶
Changes:
The
update_admin_profiletask now accepts theapi_namesoption to target extra Profiles, even when using a custompackage.xml.The
github_automerge_maintask can now be used on source branches other than the default branch to merge them into branches starting with thebranch_prefixoption, 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_datasettask which left out non-Person-Account Contacts if the dataset was extracted using the REST API.
3.20.1 (2020-10-05)¶
Issues closed:
Fixed a bug introduced in CumulusCI 3.20.0 in which the
upload_betaandupload_productiontasks could hit a connection error if uploading the package took over 10 minutes.We corrected edge cases in how we processed Boolean options for the
custom_settings_wait,exec_anon, anduninstall_posttasks. (Thanks to @davidjray)
3.20.0 (2020-09-30)¶
Critical Changes:
We’ve removed the standard flow:
retrieve_scratch. The recommended way for retrieving source-tracked changes is to use theretrieve_changestask.Changes to automatic merging:
The
github_master_to_featuretask has been renamed togithub_automerge_main. It still merges changes from the default branch to feature branches. In the case of an orphaned feature branch (a branch with a name likefeature/parent__childwherefeature/parentdoes not exist as its own branch), thegithub_automerge_mainbranch will no longer merge to the orphaned branch.The
github_parent_to_childrentask has been renamed togithub_automerge_feature. It still merges changes from feature branches to their children (e.g.feature/parentwould be merged tofeature/parent__child). It is now possible to use multiple double-underscores to create more deeply nested children, and the task will only merge to the next level (e.g.feature/parentwould merge tofeature/parent__childwhich would merge tofeature/parent__child__grandchild).The
children_onlyoption for these tasks has been removed. The strategy for picking which branches to target for merging is now determined by thesource_branch.
Tasks, Flows, and Automation:
cci flow listnow displays flows in different groups that are organized by functional area. (This is similar to howcci task listcurrently works).The
insert_recordtask can now be used against the Tooling API. We clarified that this task can accept a dict of values if configured incumulusci.yml.Added support for newer metadata types to the
update_package_xmltask.Previously, large data loads and extracts would use enormous amounts of memory. Now they should use roughly constant amounts of memory.
Adjusted tasks:
install_managedandupdate_dependenciescan now install packages from just a version id (04t).Added support for creating 2GP packages (experimental)
New task:
github_package_datagets a package version id from a GitHub commit status. It is intended primarily for use as part of theci_feature_2gpflow. Implementation details can be found in the features section of the documentation.New task:
create_package_version- Builds a 2gp package (managed or unlocked) via a Dev Hub org. Includes some automated handling of dependencies:New Flow:
build_feature_test_package- Runs thecreate_package_version task, and in the context of MetaCI it will set a commit status with the package version id.New Flow:
ci_feature_2gp- Retrieves the package version from the commit status set bybuild_feature_test_package, installs dependencies and the package itself in a scratch org, and runs Apex tests. (There is another new task,github_package_data, which is used by this flow.)
User Experience:
Improved error messaging when encountering errors during bulk data mapping validation.
Issues Closed:
Fixed a very rare bug that caused CumulusCI to fail to retrieve installed packages from an org when running package-related tasks or evaluating
whenconditional expressions.Fixed
UnicodeDecodeErrorwhile opening config files on Windows.Fixed a bug in
cumulusci.core.sfdx.sfdxwhen capture_output is False
3.19.1 (2020-09-18)¶
Issues closed:
Fixed an issue (#2032) where REST API data loads incorrectly handled Boolean values.
3.19.0 (2020-09-17)¶
Changes:
Tasks and automation:
CumulusCI now supports using the REST Collections API in data load, extract, and delete operations. By default, CumulusCI will select an API for you based on data volume (<2000 records uses the REST API, >=2000 uses Bulk); a desired API can be configured via the mapping file.
Removed the namespace_tokenize option from tasks that deploy metadata, and removed the namespace_inject option from tasks that retrieve metadata, because it’s unclear when they would be useful.
The task create_permission_set allows for creating and assigning a Permission Set that enables specific User Permissions. (Note: other types of permissions are not yet supported).
The task create_bulk_data_permission_set creates a Permission Set with the Hard Delete and Set Audit Fields permissions for use with data load operations. The org permission to allow Set Audit Fields must be turned on.
CumulusCI’s load_dataset and extract_dataset tasks now support relative dates. To take advantage of relative dates, include the anchor_date key (with a date in YYYY-MM-DD format) in each mapping step you wish to relativize. On extract, dates will be modified to be the same interval from the anchor date as they are from the current date; on load, dates will be modified to be the same interval from today’s date as they are from their anchor. Both date and date-time fields are supported.
Other:
The oid_as_pk key is no longer supported in bulk data mappings. (This key was already deprecated). Select object Id mode by including the Id field in mappings.
Issues closed:
Fixed an issue (#2001) that caused CumulusCI to extract invalid data sets when using after: steps with autoincrement primary keys.
Fixed an issue where the retrieve_changes task did not actually retrieve folders.
Fixed a bug in the metadeploy-publish task where labels starting with “Install “ were not extracted for localization.
Fixed a bug that prevented using JWT auth with sandboxes if the sandbox’s instance_url did not include an instance name.
Fixed a bug where
cci project initgenerated an invalid mapping for bulk data tasks.
3.18.0 (2020-09-03)¶
Changes:
Tasks and automation:
CumulusCI now tries 10 times (instead of 5) to install managed package versions, which helps ameliorate timeouts when new versions are released.
We added support for CSV files to the
push_listtask.We added a
refoption togithub_copy_subtreeto allow publishing a git reference (commit hash, branch, or tag).Changed the
disable_tdtm_trigger_handlers(SetTDTMHandlerStatus) task so that trigger handler state is remembered in the cache directory instead ofREPO_ROOT.
User experience:
The
cci error infocommand now defaults to showing the entire traceback when it is more than 30 lines.
Robot Framework:
The following robot keywords have been updated to work with Winter ‘21:
Load related listClick related list buttonClick related item linkClick related item popup linkGo to object homeGo to object listGo to record homePopulate lookup field
The keyword
Load related listhas been rewritten to be slightly more efficient. It also has a new parametertrieswhich can be used if the target is more than 1000 pixels below the bottom of the window.
Issues Closed:
Fixed a bug where
cci error gistcould throw a UnicodeDecodeError on Windows (fixes ##1977)Fixed a bug where
cci org listcould throw a TypeError when run outside a project directory (fixes ##1998)The
metadeploy_publishtask can now update translations for language codes with more than 2 letters.Fixed a bug where the
extract_datasettask could fail with a UnicodeEnodeError on Windows.update_dependenciesdeduplicates its package install list, making it possible to handle situations where the same beta package is reached by two dependency paths.
3.17.0 (2020-08-20)¶
Changes:
Tasks and automation:
We added the
upload_user_profile_photoandupload_default_user_profile_phototasks, which allow for setting Users’ profile photos from images stored in the repository. (Thanks to @spelak-salesforce).We added the property
is_person_accounts_enabledto theorg_configobject, which is available inwhenclauses. (Thanks to @spelak-salesforce).
Policies and inclusive language:
We added information about Salesforce’s Open Source Community Code of Conduct and Security policies.
We updated documentation to more consistently refer to the “main” branch, reflecting CumulusCI’s support for per-project specification of main branches other than
master.
User experience:
We modified how we handle situations where the default org is not valid for better user experience.
We catch a common mistake in entering command-line options (
-orginstead of--org, as well as incorrectly-formatted flow options) and show a clearer error.We now capture and display the
InstanceNameof orgs incci org list’s output.
Robot Framework:
We now cleanly fall back to the latest available API version for Robot locators if the newest API version does not have an available locator file. This change helps support Robot testing on the latest prerelease editions of Salesforce.
We included some updates to locators for API version 50.0.
Other:
We added a new environment variable,
SFDX_SIGNUP_INSTANCE, and aninstancekey in org definitions, to specify a preferred instance routing. NOTE: this functionality requires Dev Hub permissions that are not Generally Available.
Issues closed:
Fixed a bug which prevented package install links from getting added to release notes.
Fixed a bug (#1914) which caused errors when customizing some Flow steps with decimal step numbers.
Fixed a bug making it difficult to troubleshoot issues with Snowfakery and CumulusCI on Windows.
Fixed a bug in
update_admin_profilethat resulted in errors when attempting to manage Record Types across multiple objects.
3.16.0 (2020-08-06)¶
Changes:
Project initialization:
When starting a new CumulusCI project, the
cci project initcommand now uses the current git branch as the project’s default branch.API version 49.0 is now set as the default for new projects.
Bulk data tasks:
Added a task called
delete_datafor deleting all data from specified objects. This was previously available but required manually adding it tocumulusci.ymlThe
load_dataset,extract_dataset, anddelete_datatasks now support automatic namespace injection. When object and field names are specified without namespaces, but the target org only has them with a namespace prefix attached, CumulusCI automatically adds the namespace prefix. This makes it easier for projects to use a single mapping file for unmanaged orgs, namespaced scratch org, and managed orgs.
This behavior is on by default, but may be disabled by setting the
inject_namespacesoption to False. This feature is believed to be backwards-compatible; however, projects that subclass built-in data loading classes, or which use data loading tasks in very unusual ways, might be impacted.The
load_datasetandextract_datasettasks have a new option,drop_missing_schema. When enabled, this option causes CumulusCI to silently ignore elements in a dataset or mapping that are not present in the target org. This option is useful when building datasets that support additional, optional managed packages or features, which may or may not be installed.The
extract_datasetandload_datasettasks now support Person Accounts. These will be handled automatically as long as both Account and Contact are in the mapping file. Additional fields should be added to the Account mapping rather than Contact. Thanks @spelak-salesforceThe
generate_dataset_mappingtask generates mappings in line with the latest revisions of load/extract functionality: fields are specified as a list, thetablekey is omitted, and namespaces are stripped.The
generate_dataset_mappinghas improved logic for resolving reference cycles between objects. If one of the lookup fields is nillable, the object with that field will be listed first in the generated mapping file.The
generate_and_load_from_yamltask has a new option,working_directory, which can be used to keep temporary files for debugging. Thedebug_diroption has been removed.
Robot Framework:
The
robottask has a new option,processes. If the value is > 1, tests will be run in parallel in the given number of processes, using pabot. Note: It’s still up to the test author to make sure the tests won’t conflict with each other when running in parallel. This feature is considered experimental.Added an
ObjectManagerpage object for interacting with the Object Manager in Setup. Thanks to @rjanjanamRequestsLibrary is now included as a way to test REST APIs from Robot Framework.
Metadata ETL:
Added a new task,
set_field_help_text, which can be used to update Help Text values on existing fields.Added a new task,
update_metadata_first_child_text, which can be used to update a single value in existing metadata. Thanks @spelak-salesforceAdded a new task,
assign_compact_layout, which can update a compact layout assignment in existing object metadata. Thanks @spelak-salesforce
Added a new task,
github_copy_subtree, to allow publishing selected files or folders to another repository after a release. This allows publishing a subset of your project’s code from a private repository to a public one, for example.The
create_communitytask has a new option,skip_existing. When True, the task will not error if a community with the specified name already exists.The
release_betaandrelease_productionflows now generate a section in the release notes on GitHub including package install links.Task options can now use
$project_configsubstitutions in any position, not just at the start of the value.
Issues closed:
Fixed a bug where changes to global orgs would be saved as project-specific orgs.
Fixed a bug where
cumulusci.ymlcould fail to parse if certain options were specified incci project init(#1780)The
install_managedtask now recognizes an additional error message that indicates a package version has not yet finished propagating, and performs retries appropriately.Fixed a bug in the logic to prevent installing beta packages in non-scratch orgs.
Fixed a bug where the
list_changes,retrieve_changes, andsnapshot_changestasks could error while trying to reset sfdx source tracking.Fixed a bug where the
push_failure_reporttask could be missing some failed orgs if there were more than 200 errors.Fixed a bug where the
github_release_notestask could list a change note under a wrong subheading from a different section.Fixed freezing of command tasks for MetaDeploy.
Internal changes (these should not affect you unless you’re interacting with CumulusCI at the Python level):
Standardized naming of different levels of configuration:
BaseGlobalConfigis nowUniversalConfig.
BaseGlobalConfig.config_global_local_pathis nowUniversalConfig.config_global_path
BaseGlobalConfig.config_global_pathis nowUniversalConfig.config_universal_path
BaseProjectConfig.global_config_objis nowuniversal_config_obj
BaseProjectConfig.config_globalis nowconfig_universal
BaseProjectConfig.config_global_localis nowconfig_global
EncryptedFileProjectKeychain.config_local_diris nowglobal_config_dir
BaseCumulusCI.global_config_classis nowuniversal_config_class
BaseCumulusCI.global_configis nowuniversal_configAdded
UniversalConfig.cumulusci_config_diras a central way to get the path for storing configuration.UniversalConfig.config_local_dirwas removed.OrgConfigs now keep track of which keychain they were loaded from, and have a new
savemethod which is the preferred API for persisting updates to the config.
3.15.0 (2020-07-09)¶
Changes:
The
run_teststask now defaults to only logging tests that failed. Set theverboseoption to True to see all results including tests that passed.The
update_dependenciestask now supports anignore_dependenciesoption, which prevents CumulusCI from processing a specific dependency (whether direct or transitive). This feature may be useful in installers for packages that extend other packages if the installer is not meant to include the base package.Improvements to the mapping file for the
extract_datasetandload_datasettasks:Fields can now be specified as a simple list of Salesforce API names, instead of a mapping. CumulusCI will infer the database column names.
Mappings may omit the
tablekey and CumulusCI will use the object name.The tasks will check and show an error if mappings do not use a consistent object Id mode.
Mappings can now include junction objects with no additional fields.
The
generate_dataset_mappingtask now has anincludeoption to specify additional objects to include in the mapping if they aren’t found by the default heuristics.Added additional tasks intended for use as preflight checks for MetaDeploy install plans:
check_sobjects_enabledreturns a set of available SObject names.check_org_wide_defaultsreturns a boolean indicating whether Organization-Wide Defaults match the specified values.
The
update_package_xmltask now supports the MessageChannel metadata type.Adjusted the default rules for the
robot_linttask.CumulusCI can be configured to always show Python stack traces in the case of an error by setting the
show_stacktracesoption to True in theclisection of~/.cumulusci/cumulusci.yml.The prompt provided by
cci org shellnow has access to the Tooling API through the keywordtooling.When using the JWT OAuth2 flow, CumulusCI can be configured to use alternate Salesforce login URLs by setting the SF_PROD_LOGIN_URL and SF_SANDBOX_LOGIN_URL environment variables.
Issues closed:
Fixed a UnicodeDecodeError that could happen while using the
extract_datasettask on Windows. (#1838)Fixed support for the CustomHelpMenuSection metadata type in the
update_package_xmltask. (#1832)Deleting a scratch org now clears its domain from showing in
cci org list.If you try to use
cci org connectwith a login URL containinglightning.force.com, CumulusCI will explain that you should use the.my.salesforce.comdomain instead.Fixed an issue with deriving the Lightning domain from the instance URL for some orgs.
3.14.0 (2020-06-18)¶
Changes:
Added a generic
dxtask which makes it easy to run Salesforce CLI commands against orgs in CumulusCI’s keychain. Use thecommandoption to specify the sfdx command.Tasks which do namespace injection now support the
%%%NAMESPACE_DOT%%%injection token, which can be used to support references to packaged Apex classes and Record Types. The token is replaced withns.rather thanns__(for namespacens).Updated to Robot Framework 3.2.1. Robot Framework has a new parser with a few backwards incompatible changes. For details see the release notes.
The
run_teststask now gracefully handles therequired_org_code_coverage_percentoption as a string or an integer.CumulusCI now logs a success message when a flow finishes running.
Issues closed:
Fixed a regression introduced in CumulusCI 3.13.0 where connections to a scratch org could fail with a ReadTimeout or other connection error if more than 10 minutes elapsed since a prior task that interacted with the org. This is similar to the fix from 3.13.2, but for scratch orgs.
Show a clearer error message if dependencies are configured in an unrecognized format.
3.13.2 (2020-06-10)¶
Issues closed:
Fixed a regression introduced in CumulusCI 3.13.0 where connections to Salesforce could fail with a ReadTimeout or other connection error if more than 10 minutes elapsed since a prior task that interacted with the org.
3.13.1 (2020-06-09)¶
Issues closed:
Fixed a bug with “after:” steps in the load-dataset task.
Fixed a bug with record types in the extract-dataset task.
3.13.0 (2020-06-04)¶
Changes:
A new Metadata ETL task,
add_picklist_entries, safely adds picklist values to an existing custom field.Added the
cci org prunecommand to automatically remove all expired scratch orgs from the CumulusCI keychain.Improvements to the
cci org shellcommand:Better inline help
New
queryanddescribefunctions
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_dictionarytask 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_dependenciesoption. The output format has been extensively improved.The
run_teststask 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_managedandupdate_dependenciestasks now accept asecurity_typeoption to specify whether the package should be installed for all users or for admins only.whenexpressions can now use thehas_minimum_package_versionmethod 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 modalkeyword to pull in a modal page object.
Issues closed:
Limited the variables available in global scope for the
cci shellcommand.Tasks based on
BaseSalesforceApiTaskwhich use the Bulk API now default to using the project’s API version rather than 40.0.Bulk data tasks:
The
extract_datasettask no longer converts to snake_case when picking a name for lookup columns.Improved error message when trying to use the
load_datasetcommand with an incorrect record type.Fixed a bug with the
generate_mapping_fileoption.
3.12.2 (2020-05-07)¶
Changes:
Added a task,
set_duplicate_rule_status, which allows selective activation and deactivation of Duplicate Rules.The
create_communitytask now retries multiple times if there’s an error.The
generate_data_dictionarytask now supports multi-select picklist fields and will indicate the related object for lookup fields.The
update_package_xmltask now supports theNavigationMenumetadata type.
Issues closed:
In the Salesforce library for Robot Framework, fixed locators for the actions ribbon and app launcher button in Summer ‘20.
Fixed the
load_datasettask so that steps which don’t explicitly specify abulk_modewill inherit the option specified at the task level.Fixed error handling if an exception occurs within one of the
cci errorcommands.Fixed error handling if the Metadata API returns a response that is marked as done but also contains an
errorMessage.
3.12.1 (2020-04-27)¶
Fixed a problem building the Homebrew formula for installing CumulusCI 3.12.0.
3.12.0 (2020-04-27)¶
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_datasettask 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-salesforceto 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.
Issues 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 (2020-04-17)¶
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 new
generate_and_load_from_yamltask.Added two new preflight check tasks for use in MetaDeploy:
get_available_licensesandget_available_permission_set_licenses. These tasks make available lists of the License Definition Keys for the org’s licenses or PSLs.The
get_installed_packagestask now logs its result.Robot Framework: Added two new keywords (
Get Fake DataandSet 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.ymlcontains 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_settingstask 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 Launcherkeyword now tries to detect and recover from an occasional situation where the app launcher fails to load.
3.10.0 (2020-04-02)¶
Changes:
Added
custom_settings_value_waittask to wait for a custom setting to have a particular value.The
metadeploy_publishtask now has alabels_pathoption 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 (2020-03-25)¶
Issues closed:
The
batch_apex_waittask 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_defaultsandupdate_admin_profiletasks 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_modeoption in bulk data mappings.
3.9.0 (2020-03-16)¶
Critical changes:
The
update_admin_profiletask 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_xmloption. Other projects can opt into it using theinclude_packaged_objectsoption.The Python class used for this task has been renamed to
ProfileGrantAllAccessand refactored to use the Metadata ETL framework. This is a breaking change for custom tasks that subclassedUpdateAdminProfileorUpdateProfile.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 initwill 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.ymlcontains 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_errorsoption, warnings will be suppressed after the 10th row with errors.
Issues closed:
The
github_releasetask now validates thecommitoption to make sure it is in the right format.If there is an error from
sfdxwhile using theretrieve_changestask, it will now be logged.
3.8.0 (2020-02-28)¶
Changes:
The
batch_apex_waittask 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_teststask 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.
3.7.0 (2020-02-20)¶
Changes:
Added a framework for building tasks that extract, transform, and load metadata from a Salesforce org. The initial set of tasks include:
add_standard_value_set_entriesto add entries to a StandardValueSet.add_page_layout_related_liststo add Related Lists to a Page Layout.add_permission_set_permsto add field permissions and Apex class accesses to a Permission Set.set_organization_wide_defaultsto set the Organization-Wide Defaults for one or more objects and wait for the operation to complete.
Added a new task
insert_recordto insert a single sObject record via the REST API.The
update_admin_profiletask now accepts aprofile_nameoption, which defaults to Admin. This allows the task to be used to update other Profiles. (The task class has been renamed to UpdateProfile, but can still be used with the old name.)Updated to use Metadata API version 48.0 as the default for new projects.
Robot Framework: Improved documentation for the API keywords in the Salesforce keyword library.
Issues closed:
Fixed the
cci error infocommand. It was failing to load the log from the previous command.Fixed a bug where some error messages were not displayed correctly.
Adjusted the Salesforce Robot Framework keyword library for better stability in Chrome 80.
Fixed a bug where using SFDXOrgTask to run an sfdx command on a non-scratch org would break with “Must pass a username and/or OAuth options when creating an AuthInfo instance.”
Fixed a bug where an error while extracting the repository of a cross-project source could leave behind an incomplete copy of the codebase which would then be used by future commands.
3.6.0 (2020-02-06)¶
Changes:
cci task infonow has Command Syntax section and improved formatting of option information.CumulusCI now displays a more helpful error message when it detects a network connection issue. (#1460)
We’ve added the option
ignore_typesto the uninstall-packaged-incremental task to allow all components of the specified metadata type to be ignored without having to explicitly list each one.The FindReplace task now accepts a list of strings for the
file_patternoption.If the DeleteData task fails to delete some rows, this is now reported as an error.
Robot Framework: Added a new variable
\${SELENIUM_SPEEDthat is used to control the speed at which selenium runs when theOpen Test Browserkeyword is called.
Issues Closed:
Fixed an issue where existing scratch orgs could sometimes not be used in Windows.
Fixed a regression where [flow info]{.title-ref} and [task info]{.title-ref} commands could show an error [AttributeError: ‘NoneType’ object has no attribute ‘get_service’]{.title-ref} when trying to load tasks or flows from a cross-project source. (#1529)
Fixed an issue where certain HTTP errors while running the bulk data tasks were not reported.
3.5.4 (2020-01-30)¶
Changes:
There is a new top level [cci error]{.title-ref} command for interacting with errors in CumulusCI
[cci gist]{.title-ref} is now [cci error gist]{.title-ref}
[cci error info]{.title-ref} displays the last 30 lines of a stacktrace from the previous [cci]{.title-ref} command run (if present).
Changed the prompt users receive when encountering errors in [cci]{.title-ref}.
Issues Closed:
Robot Framework: Reverted a change to the [select_record_type]{.title-ref} keyword in the Salesforce library to work in both Winter ‘20 and Spring ‘20
3.5.3 (2020-01-23)¶
Added new features for running Python code (in a file or string) without bringing up an interactive shell. You can now use [–python]{.title-ref} and [–script]{.title-ref} arguments for the [cci shell]{.title-ref} and [cci org shell]{.title-ref} commands.
Added support for up to two optional parameters in Apex anonymous via token substitution.
The [EnsureRecordTypes]{.title-ref} class is now exposed as ensure-record-types and correctly supports the Case, Lead, and Solution sObjects (in addition to other standard objects).
Fixed a bug where the github_parent_pr_notes was attempting to post comments on issues related to child pull request change notes.
Fixed various Robot keyword issues that have been reported for Spring ‘20.
3.5.2 (2020-01-21)¶
Issues closed:
Fixed an issue where errors running the [cci gist]{.title-ref} command prompt the user to use the [cci gist]{.title-ref} command.
Removed reference to [os.uname()]{.title-ref} so that [cci gist]{.title-ref} works on Windows.
Fixed an issue where the dx-pull task causes an infinite loop to occur on Windows.
3.5.1 (2020-01-15)¶
Issues closed:
Fixed an issue that was preventing newlines in output.
Don’t show the prompt to create a gist if the user aborts the process.
Avoid errors that can happen when trying to store the CumulusCI encryption key in the system keychain using Python’s keyring library, which can fail on some systems such as CI systems:
We fixed a regression that caused CumulusCI to try to load the keychain even for commands where it’s not used.
We fixed a bug that caused CumulusCI to try to load the keychain key even when using an unencrypted keychain such as the EnvironmentProjectKeychain.
Adjusted some keywords in the Salesforce library for Robot Framework to handle changes in the Spring ‘20 release.
3.5.0 (2020-01-15)¶
Changes:
The
load_datasettask now accepts abulk_modeoption which can be set toSerialto load batches serially instead of in parallel.CumulusCI now stores the logs from the last five executions under
~/.cumulusci/logsCumulusCI has a new top-level command:
cci gist. This command creates a secret GitHub gist which includes: The user’s current CumulusCI version, current Python version, path to python binary, sysname (e.g. Darwin), machine (e.g. x86_64), and the most recent CumulusCI logfile (~/.cumulusci/logs/cci.log). The command outputs a link to the created gist and opens a browser tab with the new GitHub gist. This can be helpful for sharing information regarding errors and issues encountered when working with cci. This feature uses a users GitHub access token for creation of gists. If your access token does not have the ‘gist (Create gists)’ scope this command will result in a 404 error. For more info see: https://cumulusci.readthedocs.io/en/latest/features.html#reporting-error-logsChanged
UpdateAdminProfileso that it only deploys the modified Admin profile. While it is necessary to retrieve profiles along their associated metadata objects, we don’t need to do that for deployments.Added options to the deploy task:
check_only,test_level, andspecified_tests. Runcci task info deployfor details. (#1066)
3.4.0 (2020-01-09)¶
Changes:
Added
activate_flowtask which can be used to activate Flows and Process Builder processes.Added two tasks,
disable_tdtm_trigger_handlersandrestore_tdtm_trigger_handlers, which can be used to disable trigger handlers for the table-driven trigger management feature of NPSP and EDA.In the
load_datasettask, added a way to avoid resetting the Salesforce Id mapping tables by setting thereset_oidsoption to False. This can be useful when running the task multiple times with the same org.Added support for a few new metadata types from API versions 47 and 48 in the
update_package_xmltask.Added a way for Robot Framework libraries to register custom locators for use by the selenium library.
Issues closed:
Fixed a bug with freezing the
load_datatask for MetaDeploy where it would use an invalid option fordatabase_url.Fixed a bug in the
github_release_notestask when processing a pull request with no description. (#1444)Fixed inaccurate instructions shown at the end of
cci project init.
3.3.0 (2019-12-27)¶
Breaking changes:
Removed tasks which are no longer in use:
mrbelvedere_publish,generate_apex_docs, andcommit_apex_docs.
Changes:
Updated Robot Framework Salesforce library to support the Spring ‘20 release.
Added
remove_metadata_xml_elementstask which can be used to remove specified XML elements from metadata files.Updated references to the NPSP repository to use its new name instead of Cumulus.
Issues closed:
Fixed the error message shown when a task config has a bad
class_path.Fixed a warning when running the command task in Python 3.8.
When the CumulusCI Robot Framework library calls Salesforce APIs, it will now automatically retry when it is safe to do so. It will also avoid reusing old connections that might have been closed.
Fixed the
-o debug Trueoption for therobottask.
3.2.0 (2019-12-11)¶
Breaking changes:
We upgraded the SeleniumLibrary for Robot Framework from version 3.3.1 to version 4.1.0. This includes the removal of some deprecated keywords. See the SeleniumLibrary releases for links to detailed release notes.
Changes:
The
Persistent Orgstable shown bycci org listhas been renamed toConnected Orgssince scratch orgs will be shown here if they were connected usingcci org connectinstead of created via the Salesforce CLI. This table now shows the org’s expiration date, if known.Improvements to the
retrieve_changestask:The task now retrieves only the components that actually changed, not all components listed in
package.xmlin the target directory.Changes can now be retrieved into folders in DX source format. The target directory defaults to
srcif the project is usingmdapiformat or the default entry inpackageDirectoriesinsfdx-project.jsonif the project is usingsfdxformat. (Namespace tokenization is not supported in DX format, since there isn’t currently a way to deploy DX format source including namespace tokens.)
Added a task,
load_custom_settings, to upload Custom Settings defined in YAML into a target org. See https://cumulusci.readthedocs.io/en/latest/bulk_data.html#custom-settings for more info.
Issues closed:
Fixed an issue with how the package upload task logs Apex test failures to make sure they show up in MetaCI.
Fixed
KeyError: createdDateerror when trying to get scratch org info.A rare issue where CumulusCI could fail to load the symbol table for a failed Apex test class is now caught and reported.
CumulusCI now displays the underlying error if it encounters a problem with storing its encryption key in the system keychain.
3.1.2 (2019-11-20)¶
Breaking changes:
We changed the default path for the mapping file created by the
generate_dataset_mappingtask todatasets/mapping.ymlso that it matches the defaults forextract_datasetandload_datasetWe changed the
extract_datasetandload_datasettasks to default to storing data in an SQL file,datasets/sample.sql, instead of a binary SQLite database file.
Changes:
run_testscan now detect and optionally retry two classes of concurrency issues with Apex unit tests.run_testsshould always report an accurate total of test methods run, in parallel or serial mode.Added the task
generate_data_dictionary. This task indexes the fields and objects created in each GitHub release for the project and generates a data dictionary in CSV format.Added a
devhubservice. This can be used to switch a project to a non-default sfdx Dev Hub usingcci service connect devhub --projectAdded a predefined
qascratch org. It uses the same scratch org definition file as thedevorg, but makes it easier to spin up a second org for QA purposes without needing to first create it usingcci org scratch.The
database_urloption for theextract_datasetandload_datasettasks is no longer required. Eitherdatabase_urlorsql_pathmust be specified. If both are specified, thesql_pathwill be ignored.Developers can now directly execute CumulusCI from the Python command line using
python -m cumulusciorpython cumulusci/__main__.py
Issues closed:
A problem with how
run_testsperformed Apex test retries whenretry_alwaysis set to True has been corrected.
3.1.1 (2019-11-13)¶
New features:
After connecting an org with
cci org connect, the browser now shows the message “Congratulations! Your authentication succeeded.” instead of “OK”External GitHub sources can now specify
release: latest,release: latest_beta, orrelease: previousinstead of a commit, branch, or tag.The
execute_anontask has been revised to detect when a gack occurred during execution.
Issues closed:
When importing a scratch org from sfdx using
cci org import, the org’sdaysis now set correctly from the org’s actual expiration date. (#1101)The package API version from
cumulusci.ymlis now validated to make sure it’s in the “XX.0” format expected by the API. (#1134)Fixed an error deploying new setting objects using the
org_settingstask in Winter ‘20.Fixed a bug in processing preflight check tasks for MetaDeploy.
Fixed path handling in the
update_admin_profiletask when run in a cross-project flow.
3.1.0 (2019-11-01)¶
Breaking changes:
The
metadeploy_publishtask now requires setting-o publish Truein order to automatically set the Version’s is_listed flag to True. (This is backwards incompatible in order to provide a safer default.)
New features:
Python 3.8 is now officially supported.
Flows can now include tasks or flows from a different project. See Using Tasks and Flows from a Different Project for details.
In the
metadeploy_publishtask it is now possible to specify a commit hash with-o commit [sha], instead of a tag. This is useful while MetaDeploy plans are in development.Bulk data:
Added support for mapping Record Types between orgs (by Developer Name) during bulk data extract and load.
Added support for Record Type mapping in the
generate_dataset_mappingtask.Added new documentation for bulk data tasks.
Robot Framework:
The sample
create_contact.robottest that is created when initializing a new project withcci project initnow makes use of page objects.The page objects library has two new keywords,
wait for modalandwait for page object, which wait for a new page object to appear.cumulusci.robotframework.utilsnow has a decorator namedcapture_screenshot_on_errorwhich can be used to automatically capture a screenshot when a keyword fails.Prior to this change,
Go to page Detail Contactrequired you to use a keyword argument for the object id (eg:Go to page Detail Contact object_id=${object_id}). You can now specify the object id as a positional parameter (eg:Go to page Detail Contact ${object_id}).
OrgConfigobjects now have alatest_api_versionproperty which can be used to check what Salesforce API version is available.
Issues closed:
Updated the scratch org definition files generated by
cci project initto the new recommended format for org settings. Thanks to @umeditor for the fix.The
create_unmanaged_ee_srctask (part of theunmanaged_eeflow) has been revised to remove the Protected setting on Custom Objects, to ensure that projects using this setting can be deployed to an Enterprise Edition org.The Salesforce REST API client used by many tasks will now automatically retry requests on certain connection and HTTP errors.
Fixed an issue where posts to the Metadata API could reuse an existing connection and get a connection reset error if Salesforce had closed the connection.
Disabled use of PyOpenSSL by the Python requests library, since it is no longer needed in the versions of Python we support.
3.0.2 (2019-10-17)¶
Issues closed:
Fixed a bug in deploying email templates and dashboards that was introduced in 3.0.1.
Removed broken
config_qaflow from thecci project inittemplate.
3.0.1 (2019-10-16)¶
New features:
Added support for new metadata types when generating
package.xmlfrom a directory of metadata using theupdate_package_xmltask.The
ci_featureflow now supports generating change notes for a parent feature branch’s pull request from the notes on child pull requests. The parent pull request description will be overwritten with the new notes after a child branch is merged to the parent if the parent pull request has a special label,Build Change Notes.When running Apex tests with the
run_taskstask, if there is a single remaining class being run, its name will be logged.Apex test failures that happen while uploading a package are now logged.
In the
robot_libdoctask, wildcards can now be used in thepathoption.Added an
org_settingstask which can deploy scratch org settings from a scratch org definition file.
Issues closed:
Added a workaround for an issue where refreshing the access token for a sandbox or scratch org could fail if the user’s credentials were new and not fully propagated.
3.0.0 (2019-09-30)¶
Breaking change:
CumulusCI 3.0.0 removes support for Python 2 (which will reach end of life at the end of 2019). If you’re still running Python 2 you can use an older version of CumulusCI, but we recommend upgrading to Python 3. See our installation instructions for your platform.
2.5.9 (2019-09-26)¶
New features:
Added a Domain column to the list of scratch orgs in
cci org list. (thanks @bethbrains)Tasks related to Salesforce Communities (thanks @MatthewBlanski)
: - New
list_community_templatestask - Newlist_communitiestask - Newpublish_communitytask - Thecreate_communitytask can now be used to create a community with no URL prefix, as long as one does not already exist.Robot Framework:
: -
Added keywords for generating a collection of sObjects according to a template: : - `Generate Test Data` - `Salesforce Collection Insert` - `Salesforce Collection Update` - Changes to Page Objects: : - More than one page object can be loaded at once. Once loaded, the keywords of a page object remain visible in the suite. Robot will give priority to keywords in the reverse order in which they were imported. - There is a new keyword, `Log Current Page Object`, which can be useful to see information about the most recently loaded page object. - There is a new keyword, `Get Page Object`, which will return the robot library for a given page object. This can be used in other keywords to access keywords from another page object if necessary. - The `Go To Page` keyword will now automatically load the page object for the given page. - Added a basic debugger for Robot tests. It can be enabled using the `-o debug True` option to the robot task.Added support for deploying new metadata types
ProfilePasswordPolicyandProfileSessionSetting.
Issues closed:
Fixed a bug where the
batch_apex_waittask would sometimes fail to conclude that the batch was complete.Fixed a bug in rendering tables in Python 2.
2.5.8 (2019-09-13)¶
New features:
LoadDatanow supports the keyaction: updateto perform a Bulk API update jobLoadDatanow supports anafter: <step name>on a lookup entry to defer updating that lookup until a dependent sObject step is completed.GenerateMappingnow handles self-lookups and reference cycles by generatingafter:markers wherever needed.
Issues closed:
Patch selenium to convert
executeScripttoexecuteAsyncScript. This is a workaround for theexecuteScriptissue in chromedriver 77.A small issue in
QueryDataaffecting mappings usingoid_as_pk: Falsehas been fixed.
2.5.7 (2019-09-03)¶
Breaking changes:
The
retries,retry_interval, andretry_interval_addoptions have been removed from therun_teststask. These were misleading as they did not actually retry failing tests.
New features:
The
run_teststask now supports aretry_failuresparameter. This is a list of regular expressions to match against each unit test failure’s message and stack trace; if all failing tests match, the failing tests will be retried serially. Setretry_alwaysto True to trigger this behavior when any failure matches.There is now a default CumulusCI global connected app that can be used to connect to persistent orgs (assuming you know the credentials) without creating a new connected app. It’s still possible to configure a custom connected app using
cci service connect connected_appif more control over the connected app settings is needed.When CumulusCI is being run in a non-interactive context it can now obtain an access token for a persistent org using a JWT instead of a refresh token. This approach is used if the SFDX_CLIENT_ID and SFDX_HUB_KEY environment variables are set. This makes it easier to manage persistent org connections in the context of a hosted service because it’s possible to replace the connected app’s certificate without needing to obtain new refresh tokens for each org.
Issues closed:
Fixed a bug where showing the summary of flow steps would break with sub-steps in MetaDeploy.
Fixed a bug in the caching of preflight task results in MetaDeploy.
2.5.6 (2019-08-15)¶
New features:
We’ve changed how the output of some commands are displayed in tables. For users that prefer simpler style tables we’ve added a
--plainoption to approximate the previous behavior. To permanently set this option, add this in~/.cumulusci/cumulusci.yml:cli: plain_output: TrueAdded additional info to the
cci versioncommand, including the Python version, an upgrade check, and a warning on Python 2.Improved the summary of flow steps that is shown at the start of running a flow.
The
github_release_notestask now has aninclude_emptyoption to include links to pull requests that have no release notes. This is enabled by default when this task is called as part of therelease_betaflow.Robot Framework:
Added locators file to support the Winter ‘20 release of Salesforce.
New
robot_linttask to check for common problems in Robot Framework test suites.The
Open Test Browserkeyword will now log details about the browser.Added a new keyword to the CumulusCI library,
Get Community Info. It can be used to get information about a Community by name via the Salesforce API.
Issues closed:
Added workarounds for some intermittent 401 errors when authenticating to the GitHub API as a GitHub App.
cci org infoshouldn’t show traceback if the org isn’t found (#1023)
2.5.5 (2019-07-31)¶
New features:
Add the
cci org shellcommand, which opens a Python shell pre-populated with a simple_salesforce session on the selected org (assf).The
cci flow infocommand now shows nested subflows.Added the
create_communitytask allowing for API-based Community creation.Added the
generate_dataset_mappingtask to generate a Bulk Data mapping file for a package.CumulusCI can now authenticate for GitHub API calls as either a user or an app. The latter is for use when CumulusCI is used as part of a hosted service.
The
OrgConfigobject now provides access to the Organization SObject data via theorganization_sobjectattribute.
Issues closed:
The
install_regressionflow now upgrades to the latest beta from the most recent final release instead of from the previous final release.Made sure that an
errorMessagereturned from a metadata API deploy will be reported.The
load_datasettask will now stop with an exception if any records fail during the load operation.
2.5.4 (2019-07-03)¶
Updated the default API version for new projects to 46.0
Fixed a bug in reporting scratch org creation errors encountered while running a flow.
Fixed the
snapshot_changesandlist_changestasks to avoid breaking when the last revision number of a component is null.
2.5.3 (2019-06-24)¶
Breaking changes:
Added two new options to the UpdateDependencies task:
allow_newer: If the org already has a newer release, use it. Defaults to True.allow_uninstalls: Allow uninstalling a beta release or newer final release if needed in order to install the requested version. Defaults to False.
These defaults are a change from prior behavior since uninstalling packages is not commonly needed when working with scratch orgs, and it is potentially destructive.
New features:
Added support for defining and evaluating preflight checks for MetaDeploy plans.
The tasks for bulk data extract and load are now configured by default as
extract_dataandload_data.Updated the project template created by
cci project init:Added
.gitignore,README.md, and a template for GitHub pull requestsAdded an option to store metadata in DX source format
Added a sample
mapping.ymlfor the bulk data tasksSpecify the currently installed CumulusCI version as the project’s
minimum_cumulusci_versionCheck to make sure the project name only contains supported characters
The
robot_libdoctask can now generate documentation for Robot Framework page objects.
Issues fixed:
Colors in terminal output are now displayed correctly in Windows. (#813)
ccino longer prints tracebacks when a flow or task is not found. Additionally, it will suggest a name if a close enough match can be found. (#960)Fixed UnicodeDecodeError when reading output from subprocesses if the console encoding is different from Python’s preferred file encoding.
Fixes related to source tracking:
Track the max revision retrieved for each component instead of the overall max revision. This way components can be retrieved in stages into different paths.
If
snapshot_changesdoesn’t find any changes, wait 5 seconds and try again. There can be a delay after a deployment before source tracking is updated.
2.5.2 (2019-06-10)¶
Issues fixed:
When generating package.xml, translate
___NAMESPACE___tokens in filenames into%%%NAMESPACE%%%tokens in package.xml (#1104).Avoid extraneous output when
--jsonoutput was requested (#1103).Display OS notification when a task or flow completes even if it failed.
Robot Framework: Added logic to retry the initial page load if it is not loading successfully.
Internal API change: Errors while processing a response from the Metadata API are now raised as MetadataParseError.
2.5.1 (2019-05-31)¶
Issues fixed:
Fixed
cci service connectwhen run outside of a directory containing a CumulusCI project.
2.5.0 (2019-05-25)¶
Breaking changes:
We reorganized the flows for setting up a package for regression testing for better symmetry with other flows. If you were running the
install_regressionflow before, you now probably wantregression_org.Details: The
install_regressionflow now installs the package without configuring it. There is a newconfig_regressionflow to configure the package (it defaults to callingconfig_managed) and aregression_orgflow that includes bothinstall_regressionandconfig_regression.
New features:
CumulusCI now has experimental support for deploying projects in DX source format. To enable this, set
source_format: sfdxin the project section ofcumulusci.yml. CumulusCI will deploy DX-format projects to scratch orgs usingsfdx force:source:pushand to other orgs using the Metadata API (by converting to metadata source format in a temporary directory).Setting a default org in CumulusCI (using
cci org defaultor the--defaultflag when creating a scratch org) will now also update the sfdxdefaultusername. (#868)When connecting to GitHub using
cci service connect github, CumulusCI will now check to make sure the credentials are valid before saving them.Robot Framework:
Added a framework for creating “page object” classes to contain keywords related to a particular page or component.
The
robottask now takes anameoption to control the name of the robot suite in output.Updates to the keyword
Open Test Browser:It allows you to open more than one browser in a single test case. (#1068)
It sets the default size for the browser window to 1280x1024.
Added a new keyword argument
sizeto override the default size.Added a new keyword argument
aliasto let you assign an alias to multiple browser windows.
Issues fixed:
Robot Framework: Fixed a bug where the
Delete Session Recordskeyword would skip deleting some records. (#973)If Salesforce returns an error response while refreshing an OAuth token, CumulusCI will now show the response instead of just the HTTP status code.
Fixed a bug in reporting errors from the Metadata API if the response contains
componentFailureswith noproblemorproblemType.
2.4.4 (2019-05-09)¶
New features:
Added tasks
list_changesandretrieve_changeswhich interact with source tracking in scratch orgs to handle retrieving changed metadata as Metadata API format source.Added task
EnsureRecordTypesto generate a Record Type and optional Business Process for a specific sObject and deploy the metadata, if the object does not already have Record Types.The
update_admin_profiletask now uses Python string formatting on thepackage.xmlfile used for retrieve. This allows injection of namespace prefixes using{managed}and{namespaced_org}.
Issues fixed:
If CumulusCI gets a connection error while trying to call the Salesforce Metadata API, it will now retry several times before giving up.
The GitHub release notes parser now recognizes Issues Closed if they are linked in Markdown format.
Robot Framework: Fixed a locator used by the
Select App Launcher Appkeyword to work in Summer ‘19.The
cci project initcommand now uses an updated repository URL when extending EDA.
2.4.3 (2019-04-26)¶
Allow configuration of the email address assigned to scratch org users, with the order of priority being (1) any
adminEmailkey in the scratch org definition; (2) theemail_addressproperty on the scratch org configuration incumulusci.yml; (3) theuser.emailconfiguration property in Git.CumulusCI can now handle building static resource bundles (
*.resource) while deploying using the Metadata API. To use this option, specify thestatic_resource_pathoption for the deploy task. Any subdirectory in this path will be turned into a resource file and added to the package during deployment. There must be a corresponding*.resource-meta.xmlfile for each static resource bundle.Bulk data tasks: Fixed a bug that added extra underscores to field names when processing lookups.
Robot Framework: The Salesforce library now has the ability to switch between different sets of locators based on the Salesforce version, and thanks to it we’ve fixed the robot so it can click on modal buttons in the Summer ‘19 release.
The
cci project initcommand now generates projects with a different preferred structure for Robot Framework tests and resources, with everything inside therobotdirectory. Existing projects with tests in thetestsdirectory should continue to work.
2.4.2 (2019-04-22)¶
The
purgeOnDeleteflag for thedeploytask will now automatically be set to false when deploying metadata to production orgs (previously deployment would fail on production orgs if this flag was true).The installation documentation now recommends using
pipxto install CumulusCI on Windows, so that you don’t have to set up a virtualenv manually.
2.4.1 (2019-04-09)¶
Changes:
Updated the default Salesforce Metadata API version to 45.0
The scratch org definition files generated by
cci project initnow useorgPreferenceSettingsinstead of the deprecatedorgPreferences.The
metadeploy_publishtask now defaults to describing tasks based onDeployas “metadata” steps instead of “other”.
Issues Fixed:
Fixed a couple problems with generating passwords for new scratch orgs:
A project’s predefined scratch org configs now default to
set_password: True(which was already the case for orgs created explicitly using cci org scratch).A scratch org config’s
set_passwordflag is now retained when recreating an expired org. (Fixes ##670)
Fixed the logic for finding the most recent GitHub release so that it now only considers tags that start with the project’s git
prefix_release.Fixed the
install_prod_no_configflow. Thedeploy_posttask was not injecting namespace tokens correctly.Fixed the
connected_apptask to work with version 7 of the sfdx CLI. (Fixes ##1013)Robot Framework: Fixed the
Populate Fieldkeyword to work around intermittent problems clearing existing field values.
2.4.0 (2019-03-18)¶
Critical changes:
If you are publishing installation plans to MetaDeploy, there have been some significant changes:
Plan options are now read from a new
planssection ofcumulusci.ymlinstead of from task options. This means that a single run of the task can now handle publishing multiple plans, and there is now a genericmetadeploy_publishtask which can be used instead of setting up different tasks for each project.Plan steps are now defined inline in the plan configuration rather than by naming a flow. This makes it easier to configure a plan that is like an existing flow with one or two adjustments.
There is now a way to customize MetaDeploy step settings such as
nameandis_requiredon a step-by-step basis, usingui_optionsin the plan config.The task will now find or create a
PlanTemplateas necessary, matching existing PlanTemplates on the product and plan name. This means the plan config no longer needs to reference a plan template by id, which makes it easier to publish to multiple instances of MetaDeploy.
The
install_upgradeflow was renamed toinstall_regressionto better reflect the use case it is focused on. There are also a few updates to what it does:It will now install the latest beta release of managed packages instead of the latest final release.
It now runs the
config_managedflow after upgrading the managed package, so that it will work if this flow has references to newly added components.
Changes:
Added support for deploying Lightning Web Components.
Fixed the bulk data load task to handle null values in a datetime column.
The ci-master flow now explicitly avoids trying to install beta releases of dependencies (since it’s meant for use with non-scratch orgs and we block installing betas there since they can’t be upgraded).
2.3.4 (2019-03-06)¶
Added a new flow,
install_upgrade, which can be used for testing package upgrades. It installs and configures the previous release of the package, then installs the latest release.Fixed an error when using
cci org info --json(fixes ##1013).
2.3.3 (2019-02-28)¶
Fixed a bug where flow options specified on the command line were not passed to tasks correctly.
cci service connectnow shows a more helpful error message if you call it with a service name that CumulusCI doesn’t know about. Fixes ##752.Deleted scratch orgs will no longer show the number of days since they were created in
cci org list. Thanks to @21aslade for the fix.Updates to the MetaDeploy publish task:
It is now possible to publish a new plan for an existing version.
It is now possible to specify the AllowedList to which a plan is visible.
Updates to Robot Framework support:
Fixed a bug in the
robottask: it now accepts an option calledtestrather thantests, since the latter was ignored by Robot Framework.Fixed some stability problems with the
Populate Fieldkeyword.The
robot_libdoctask has been replaced with a new task of the same name that can generate a single HTML document for multiple keyword files by passing a comma-separated list of files to thepathoption.
2.3.2 (2019-02-19)¶
Mapping enhancements for bulk
QueryDataandLoadDatatasksThe mapping yaml file no longer requires using
Id: sf_idas a field mapping. If not provided,QueryDataandLoadDatawill use local database ids instead of Saleforce OIDs for storing lookup relationships. Previous mappings which specify theId: sf_idmapping will continue to work as before using the Salesforce OID as the mapping value.The mapping yaml file’s
lookups:section now handles defaults to allow simpler lookup mappings. The only key required is nowtable. If thekey_fieldis provided it will be used.
The
sql_pathoption onQueryDatacan be used to provide the file path where a SQL script should be written. If this option is used, a sqlite in-memory database is used and discarded. This is useful for storing data sets in a Github repository and allowing diffs of the dataset to be visible when reviewing Pull RequestsWhen using this option, it is best to make sure your mapping yaml file does not provide a field mapping for the
Idfield. This will help avoid merge conflicts if querying data from different orgs such as scratch orgs.
The [sql_path]{.title-ref} option on
LoadDatacan be used to provide the file path where a SQL script file should be read and used to load an in-memory sqlite database for the load operation.
2.3.1 (2019-02-15)¶
Fixed a bug that caused the
ccicommand to check for a newer version on every run, rather than occasionally. Also we now detect whether CumulusCI was installed using Homebrew and recommend an upgrade command accordingly.CumulusCI now automatically generates its own keychain key and stores it in the system keychain (using the Python [keyring]{.title-ref} library). This means that it is no longer necessary to specify a CUMULUSCI_KEY as an environment variable. (However, the environment variable will still be preferred if it is there, and it will be migrated to the system keychain.)
New task
connected_appmakes it easier to deploy and configure the Connected App needed for CumulusCI’s keychain to work with persistent orgs. The connected app is deployed usingsfdxto an org in thesfdxkeychain and defaults to thedefaultdevhubusername.The
robottask gives a more helpful error message if you forget to specify an org.Updates to the task for publishing to MetaDeploy:
Dependency installation steps are now named using the package name and version.
The task options have been revised to match changes in the MetaDeploy API. An optional
plan_template_idis now accepted.preflight_messageis now namedpreflight_message_additionaland is optional.post_install_messageis now namedpost_install_message_additionaland is optional.
2.3.0 (2019-02-04)¶
Changes:
When installing a managed package dependency, pre & post metadata bundles are now fetched from the git commit corresponding to the most recent release of the managed package, instead of master.
Improvements to the task for publishing a release to MetaDeploy:
It can now publish a tag even if it’s a different commit than what is currently checked out in the working directory.
It now pins managed deployments of metadata bundles to the git commit corresponding to the most recent release of the managed package.
Issues Closed:
##962:
cumulusci.utils.findReplaceuses wrong file encoding in Python 3##967: Allow
cci servicecommands to be run from outside a project repository
2.3.0b1 (2019-01-28)¶
Breaking Changes:
We refactored the code for running flows. The full list of steps to run is now calculated from nested flow configuration when the flow is initialized instead of during runtime. Your existing flows should continue to run as before, but if you’re interacting with CumulusCI at the Python API level, you’ll need to use the
FlowCoordinatorinstead ofBaseFlow.Tasks are now expected to have no side effects when they are instantiated. If tasks need to set up resources, do that in
_init_taskinstead of__init__or_init_optionsto make sure it doesn’t happen until the task is actually being run.
Changes:
There is now a
dev_org_beta_depsflow which sets up an org in the same way asdev_org, but installs the latest beta versions of managed package dependencies.The
github_releasetask now records the release dependencies as JSON in the release’s tag message.Looking up the latest release from GitHub is now done using a single HTTP request rather than listing all releases.
We added S-Controls to the list of metadata types that the
uninstall_packaged_incrementaltask will delete.Salesforce Robot Framework library: The
Get Current Record Idkeyword now parses the Id correctly when prefixed with%2F, which apparently happens.The
push_failure_reporttask now avoids an error when querying for info about lots of subscriber orgs.
Issues Closed:
##911: Fix UnicodeDecodeError when parsing XML retrieved from the Metadata API.
2.2.6 (2019-01-03)¶
Changes:
Added support for more metadata types: Group, SharingSet, SharingCriteriaRule, SharingOwnerRule, and SharingTerritoryRule.
Release process: We now have tools in place to release cumulusci so that it can be installed using Homebrew or Linuxbrew.
Issues Closed:
Fixed an issue where tasks using the Salesforce REST API could build a wrong URL with an extra slash after the instance URL.
Fixed an issue where overriding a flow step to set flow: None did not work.
Robot Framework: Added an automatic retry to work around an issue with an intermittent ConnectionResetError when connecting to headless Chrome in Python 3.
2.2.5 (2018-12-26)¶
The
install_managedandinstall_managed_betatasks now take optionalactivateRSSandpasswordoptions.activateRSSis set to true by default so that any active Remote Site Settings in the package will remain active when installed.When running a task with the
--debugflag, HTTP requests are now logged.Robot Framework:
Fix issue where “Get Current Record Id” could accidentally match the object name instead of the record Id.
Fix issue where “Load Related List” would fail to scroll down to the list.
Fix issue where errors deleting records during test teardown would cause a hidden test failure.
2.2.4 (2018-12-17)¶
Changes:
Bulk query task:
Fixed an issue with querying data filtered by record type (#904).
Fixed an issue where the optimized approach for loading data into PostgreSQL was not used.
The task will now prevent you from accidentally overwriting existing data by exiting with an error if the table already exists.
The
deploytask now logs the size of the zip payload in bytes.Fixed a TypeError in the
commit_apex_docstask (#901).Robot Framework:
Add location strategies for locating elements by text and by title.
2.2.3 (2018-12-07)¶
Changes:
Improved error messages when scratch org creation failed and when a service is not configured.
Robot Framework: Limit how long the “Load Related List” keyword will wait.
2.2.2 (2018-11-27)¶
Changes:
Improved error handling during scratch org creation:
Capture and display stderr output from SFDX (issue ##413).
Avoid infinite recursion if username wasn’t found in output from SFDX.
Robot Framework: Increased the timeout for initial loading of the browser.
2.2.1 (2018-11-21)¶
Oops, an update in CumulusCI 2.2.0 ended up breaking the update_dependencies task! Now fixed.
2.2.0 (2018-11-21)¶
Changes:
Tasks can now be placed in groups for the task list! Just specify a
groupwhen defining the task in YAML.By popular request, there is now an
org importcommand to import an org from the SFDX keychain to the CumulusCI keychain. It takes two arguments: the SFDX username or alias, and the org name.Robot Framework:
The
Populate Fieldkeyword now clears an existing value using keystrokes to make sure that change events are fired.Added a
Get Namespace Prefixkeyword to the CumulusCI library to get the namespace prefix for a package.Fixed a bug that broke opening a browser after using the
Run Taskkeyword.
Documentation updates:
The readme now includes a link to the full documentation.
The instructions for installing CumulusCI on macOS have been simplified and now recommend using the official Python installer from python.org instead of Homebrew. (Homebrew should still work fine, but is no longer necessary.) We also now suggest creating a virtualenv using venv rather than pyenv since the former is included with Python. It’s fine to continue using pyenv if you want.
Give more useful links for how to set up SFDX.
Updated robot library docs.
Internal refactoring:
Removed dependency on HiYaPyCo for YAML loading, which would not report which file failed to load in the event of a YAML parse error.
We now consistently load YAML in the same manner throughout the entire library, which will work with all supported Python versions.
Simplified the Python API for setting up a CumulusCI runtime. Begone, YamlGlobalConfig and YamlProjectConfig. Our Python API is not yet documented, but we’re working on it. In the meantime, if you were relying on running CCI from within Python, you can now just use BaseGlobalConfig (and its get_project_config member) to bootstrap CCI.
BaseProjectConfig has shrugged off some methods that just delegated to the keychain.
BaseGlobalConfig has shrugged off some unimplemented methods, and BaseGlobalConfig.get_project_config is now deprecated in favor of using a runtime.
Introducing… CumulusCIRuntime! In order to alleviate the complexities of getting CumulusCI tasks/flows running from within a Python application, CumulusCIRuntime encapsulates a lot of the details and wiring between Keychain, GlobalConfig, and ProjectConfig. Usage docs are barely included.
CliConfig has been renamed to CliRuntime and now inherits from CumulusCIRuntime. It is still accessible as CliConfig.
Upgraded dependencies.
Contributor improvement: The contributor docs now explain how to install pre-commit hooks to make sure our linters have run before you commit.
Issues Closed:
##674:
cci org import <username> <org_name>##877: CumulusCI should be able to connect to any DX alias and/or understand dx auth files
2.1.2 (2018-10-29)¶
Oops, we broke a few things! This is a bugfix release to fix a few issues found during the Salesforce.org Open Source Community Sprint last week.
Issues Closed:
##858 Dataload bulk query fails to load data into the sqlite db
##862 CLI options fail on robot task in 2.1.1
##864 Deploying a -meta.xml file with non-ASCII characters breaks in Python 2
2.1.1 (2018-10-23)¶
Changes:
Our robotframework library for Salesforce got a number of improvements:
New keywords:
Click Header Field Link: Clicks a link in a record headerLoad Related List: Scrolls to a related list and waits for it to loadClick Related List Button: Clicks a button in the header of a related listClick Related Item Link: Clicks the main link for an item in a related listClick Related Item Popup Link: Clicks a link in the popup menu for an item in a related list
Updated to
robotframework-seleniumlibrary3.2.0 which includes aScroll Element Into Viewkeyword.Wait Until Loading Is Completenow waits for the main body of the page to renderPopulate Lookup Fieldnow tries several times in case there’s an indexing delayAdded a
-o verbose Trueoption to the robot task which logs each keyword as it runs.We now ignore errors while running the script that waits for XHRs to complete (it can fail if the page reloads before the script finishes).
Popup notifications upon completion of a flow or task now work on Linux too, if you have the
notify-sendcommand from libnotify. On Ubuntu, install thenotify-osdpackage.
Issues Closed:
##827 Bulk data load breaks in Python 2
##832 pip install cumulusci gets the wrong version of urllib3
2.1.1b1 (2018-10-17)¶
uninstall_packaged_incrementaltask: Addedignoreoption to specify components to skip trying to delete even if they are present in the org but not in the local source.
2.1.0 (2018-10-16)¶
Fixed the
cci project initcommand, which was failing because it wanted the project to already exist! Fixes ##816. In addition, other commands will now function without an active project or keychain when it possible to do so. (For example, trycci versionwhich now works when you’re not in a project directory.)update_dependenciestask:: - Added support for installing private github repositories as dependencies. Thanks to Anthony Backhouse (@1handclapping) for the patch. Fixes ##793 - Added a
dependenciesoption to override the project dependencies.execute_apextask:: - Print more useful error messages when there are Apex exceptions.
robottask:: - Our logic for automatically retrying failed selenium commands has been encapsulated into the
cumulusci.robotframework.utils.selenium_retrydecorator which can be applied to a robot library class for increased stability. - There is now an option to pause and enter the Python debugger after a keyword fails. Run with-o pdb True. - Revised keywords and locators to support the Winter ‘19 release of Salesforce and improve stability. - TheSalesforce.robotfile now includes theOperatingSystemandXMLlibraries from Robot Framework by default. These libraries are helpful in building integration tests such as modifying and deploying a PageLayout to include a field needed in Suite Setup of an integration test.Revised installation instructions for Windows. Thanks Matthew Blanski (@Auchtor).
Internal change: Use a thread-local variable instead of a global to track the current running task.
2.1.0b1 (2018-10-05)¶
It’s happening! Hot on the heels of the last release, CumulusCI is making the jump to the modern era by adding support for Python 3! (Specifically, Python 3.6 and 3.7.) Don’t worry, we’ll also continue to support Python 2 for the time being. Because this is a bit more wide-reaching change than normal, we’re releasing a beta first. To install the beta you’ll need to explicitly request its version:
pip install cumulusci==2.1.0b1. If you already have CumulusCI, after the update it will continue to run under your Python 2 interpreter. If you want to switch to the Python 3 interpreter (which is not yet required), we recommend deleting your Python virtualenv and starting over with the instructions in the tutorial. If you want to keep your Python 2-based virtualenv around just in case, follow those instructions but name the new virtualenvcci-py3instead ofcci.There are also some big changes to the bulk data tasks. Did you know CumulusCI has bulk data tasks? They are not configured by default, because we need to finish documenting them. But we’ll list the changes in case someone is already relying on them:
Fixed connection resets by downloading an entire result file before processing.
Improved performance by processing batches in parallel, avoiding the SQLAlchemy ORM, storing inserted Ids in separate tables, and doing lookups using SQL joins rather than a separate query for each row.
If you’re using a postgres database for local storage, performance gets even better by taking advantage of postgres’
COPYcommand to load CSV directly.Added a
hardDeleteoption for bulk deletes.Added a
start_stepoption for bulk loads which can be used to resume loading after an error.
The
push_failure_reporttask will now by default hide failures that occurred due to the “Package Uninstalled” or “Salesforce Subscription Expired” errors, which are generally benign.Fixed the check for newer CumulusCI versions to work around an issue with old
setuptools.Contributor change: We switched CumulusCI’s own tests to run using
pytest.Internal change: We switched to the
cryptographylibrary for handling keychain encryption.
2.0.13 (2018-10-02)¶
Happy Spooky October! It’s unlucky release 2.0.13, with some scary-cool improvements. Just to show you how ramped up our RelEng team is now, this release had TWENTY THREE pull requests in 12 days! From all four of your friendly SFDO Release Engineering committers. Thanks so much for continuing to use CCI for all your Salesforce automation needs.
NEW FLOW: ci_beta_dependencies installs the latest beta of project dependencies and run tests. Includes task error when running against non-scratch orgs.
NEW TASK: ReportPushFailures pulls a list of Package Push Upgrade Request failures after a push attempt, including grouping by important factors.
Issue a terminal “Bell” sound and attempt to display a macOS notification when a commandline task or flow completes.
Cleaned up python exception and error handling across the board, so that we can provide you, the user, with only the most relevant information. Try using CCI without setting your CUMULUSCI_KEY and see a simplified error message.
Fixed the utils for processing namespaces in package zip files to handle non-ASCII characters
The CONTRIBUTING.rst docs and Makefile have been updated to show how we release updates of CCI.
Skip beta releases when checking for a newer cumulusci version
When using the strip_namespace option on deployments, we now log which files had changes made before deploying.
Going Out: the SFDXDeploy and SFDXJsonPollingTasks have been removed, as they didn’t work.
Going Out: Use the safe_load() method when loading YAML instead of the naive load(). If you relied on executing code in your CCI YAML file parsing, that will no longer work.
2.0.12 (2018-09-20)¶
Fixed apexdoc URL
Fixed update-admin-profile to set any existing record type defaults to false before setting new defaults.
Fixed deployment of -meta.xml files containing non-ASCII characters.
Updated the robot selector for “Click Modal Button” to work for modals opened by a Quick Action.
2.0.11 (2018-09-14)¶
update-admin-profile now uses xml parsing instead of string replacement for more targeted editing of Admin.profile to fix issues with deploying record types via dependencies
Projects can declare a dependency on a minimum version of cumulusci by specifying [minimum_cumulusci_version]{.title-ref} in cumulusci.yml
2.0.10 (2018-09-13)¶
update-admin-profile task now sets application and tab visibility and supports setting record type visibility and default via the new record-types task option
Restructured exceptions to include two new parent exceptions useful in client implementations:
CumulusCIFailure: Used to signify a failure rather than an error, such as test or metadata deployment failures
CumulusCIUsageError: Use to signify a usage error such as accessing a task that does not exist
execute-anon task now accepts either [apex]{.title-ref} (string) or [path]{.title-ref} (Apex in a local file) for the Apex to execute. Also, the [managed]{.title-ref} and [namespaced]{.title-ref} options allow injecting namespace prefixes into the Apex to be executed.
New flow [retrieve_scratch]{.title-ref} can be used to retrieve declarative changes from a scratch org into the src/ directory
2.0.9 (2018-09-10)¶
Make robot commands use new lightning URLs
Remove unused filter_name arg from Go to Record Home robot keyword.
Fix metadata map for Settings.
2.0.8 (2018-08-21)¶
Flows that are executed from within another flow now support task-level control flow.
We no longer support the undocumented ability for a Flow to provide its own class_path.
Use the connected app details to set a client name on HTTP requests to Salesforce.
2.0.7 (2018-08-16)¶
[cci service show]{.title-ref} has been renamed [cci service info]{.title-ref}!
Update default API version in the base YAML to v43.0.
Doc updates in the tutorial, thanks to @justindonnaruma!
Significant refactor of the cli module, including a bunch of small usability and exception handling changes. See https://github.com/SFDO-Tooling/CumulusCI/pull/708 for details.
Display the file name for error causing files in more cases.
Strip packageVersions tags from aura/, components/, and pages/ metadata.
Update PyYAML dependency.
2.0.6 (2018-08-07)¶
In Robot tests that use the standard keyword for interacting with a lookup field, we now wait for all AJAX requests to complete before submitting.
Add unit tests for large sections of the library.
We now support Flow, DuplicateRule, and other new Metadata types thanks to @carlosvl.
Fixed refreshing oauth token when deploying metadata to persistent orgs.
2.0.5 (2018-08-01)¶
Fixes ##695: Update InstallPackageZipBuilder to set activateRSS to unblock installs.
2.0.4 (2018-07-30)¶
Fixes ##611: Scratch org operations were failing on Windows
Fixes ##664: Scratch org aliases incorrectly included double quotes in the alias name
2.0.3 (2018-07-27)¶
Added support for waiting on Aura HTTP Requests to complete after a browser action is performed in selenium from the Robot Salesforce Library: http://cumulusci.readthedocs.io/en/latest/robotframework.html#waiting-for-lightning-ui
Github API client will now automatically retry on 502 errors
Better error messages from parsing errors during package.xml generation which show the file causing the error
2.0.2 (2018-06-06)¶
Bugfix: Update InstallPackageZipBuilder to use a recent api version to unblock installs.
2.0.1 (2018-06-06)¶
Bugfix: Allow passing a connected app directly to OrgConfig.refresh_oauth_token.
2.0.0 (2018-06-01)¶
After over 19 months of development as alpha (40 version over 3 months) and beta (98 releases over 16 months) releases and over a year running production builds using CumulusCI, it’s time to remove the “beta” label.
This marks the first production release of CumulusCI 2.x!
2.0.0-beta99 (2018-05-31)¶
Ensure that github credentials are never shown in the log for github dependencies with unmanaged metadata
2.0.0-beta98 (2018-05-31)¶
WARNING: This release introduces breaking changes to the syntax for flow definitions and to the default flows. If you customized any of the default flows in your project or have defined custom flows, you will need to modify your cumulusci.yml file to work with this release.
Changes default flows shipped with CumulusCI to a new syntax and structure taking advantage of the ability for flows to call other flows. This allows flows to be modularized in ways that weren’t possible when the original set of flows was designed.
The tasks: section in cumulusci.yml for a flow is now renamed to steps: A FlowConfigError will be raised if an old style flow definition is detected. All existing flow customizations and custom flows need to be changed in the cumulusci.yml to avoid raising an exception.
All default flows have been restructured. Existing customizations of default flows likely need to be changed to adapt to the new structure. In most cases, you will want to move your customizations to some of the new config_* or deploy_* instead of the main flows.
ci_beta_install has been removed and replaced with install_beta and uninstall_managed install_beta does not attempt to uninstall an existing version of the package. If you need to uninstall the package first, use the uninstall_managed flow before running install_beta
Added new qa_org flow to allow different configurations for dev vs QA orgs
New modularized flows structure allows for easier and more reusable customization:
dependencies Runs the pre-package deployment dependency tasks update_dependencies and deploy_pre This flow is called by almost all the main flows.
config_* flows provide a place to customize the package configuration for different environments. These flows are called by the main flows after the package metadata is deployed or a managed version is installed. Customizations to the config flows automatically apply to the main flows.
config_apextest Configure org for running apex tests
config_dev Configure org for dev use
config_managed Configure org with a managed package version installed
config_packaging Configure the packaging org
config_qa Configure org for QA use
deploy_* flows provide a place to customize how metadata deployments are done. The deploy flows do more than just a simple deployment such as unscheduling scheduled jobs, rebuilding the package.xml, and incrementally deleting any stale metadata in the package from the org.
deploy_unmanaged Used to do a standard deployment of the unmanaged metadata
deploy_packaging Used to deploy to packaging. Wraps the create_managed_src task around the deploy to inject metadata that can only be deployed to the packaging org
deploy_unmanaged_ee Used to deploy unmanaged metadata to an Enterprise Edition org using the create_unmanaged_ee_src task
github dependencies can now point to a private Github repository. All zip downloads from Github will pass the password (should be a personal access token) from the github service configured in the CumulusCI keychain.
GithubRelease, PushUpgradeRequest, and PackageUploadRequest now track the release data as return values
2.0.0-beta97 (2018-05-31)¶
Salesforce Connected App is now a CCI Service! Instead of using [cci org config_connected_app]{.title-ref} you can use the familiar [cci service]{.title-ref} commands.
Better error handling when running commands without specifying a default org (thanks @topherlandry)
Fix issue where scratch org password may become outdated
Improve Robot test runner task to use the already configured CCI environment instead of trying to create a new one.
Enable Robot testing in Headless Chrome on Heroku.
Address Python3 print statement issues.
Add LogLine task class to log statements and variables.
Add PassOptionAsResult, PassOptionAsReturnValue to pass options around in Flows.
Further extended the Flow runner subclass API.
2.0.0-beta96 (2018-05-18)¶
Fixes for CumulusCI on Windows - CumulusCI 2 now supports Windows environments!
Support skipping scratch org password creation by specifying [–no-password]{.title-ref} to [cci org scratch]{.title-ref}
Add additional logging to PackageUpload
2.0.0-beta95 (2018-05-10)¶
Add pytz to requirements
2.0.0-beta94 (2018-05-10)¶
Support added for nested flows. Specify a flow instead of a task inside another flow in cumulusci.yml
Add new task github_release_report to report info from GitHub release notes
Add new flow dev_deploy for minimal deploy (tasks: unschedule_jobs, deploy)
Enhance BaseFlow to be more easily subclassed/overridden/observed. Preserves task step number and adds several hook methods for subclasses (_pre_task, _post_task, _post_task_exception)
Refactor github_release_notes task to use github3.py instead of calling the GitHub API directly. Includes these minor changes to functionality:
: - Cannot create release with this task (use github_create_release instead) - Merge existing release notes even when not publishing
Fix issue that caused duplicate entries in the dependency tree
Sort output of os.listdir in all occurrences. Guarantees ordered iteration over files on disk
Validate CUMULUSCI_KEY value and raise more helpful exceptions if invalid
2.0.0-beta93 (2018-04-20)¶
Fix issue in command task for Windows
Support interactive in command task (thanks Chris Landry!)
Search more pull requests (100 vs 30) when generating release notes
Add options to Apex documentation generator task
2.0.0-beta92 (2018-04-04)¶
Ignore OWNERS file in package.xml generation
Pipe stderr in command tasks
2.0.0-beta91 (2018-04-03)¶
Fix issue in ZIP functionality for Windows
2.0.0-beta90 (2018-03-26)¶
Include missing scratch_def.json template file needed by cci project init
2.0.0-beta89 (2018-03-23)¶
Improved cci project init
: - Prompt for extending a repository with HEDA and NPSP as selectable options - Use jinja2 templates included with cumulusci to create files - Include a default Robot test
update_package_xml now ignores CODEOWNERS files used by Github
Fixed an import error for click in cci
2.0.0-beta88 (2018-03-20)¶
Fix issue in parsing version from tag name
2.0.0-beta87 (2018-03-15)¶
Fix issue in getting latest version
2.0.0-beta86 (2018-03-13)¶
Initial Integration with Robot Framework (see here for details: http://cumulusci.readthedocs.io/en/latest/robotframework.html)
Add support for GlobalValueSetTranslation Metadata Type (thanks Christian Szandor Knapp!)
Use Tooling API for PackageUploadRequest
New doc “Why CumulusCI?”
Add documentation for the skip option on GitHub dependencies
2.0.0-beta85 (2018-02-21)¶
Support bigobject index element in .object
Only run meta.xml file cleaning on classes/* and triggers/* directory
Add docs on CumulusCI Flow
Add reference to needing the Push API to run release_beta in tutorial doc
2.0.0-beta84 (2018-02-12)¶
Add new Status ‘Queued’ to PackageUploadRequest check
2.0.0-beta83 (2018-02-08)¶
Add a sleep in between successful PackageUploadRequest and querying for MetadataPackageVersion to address issue in Spring ‘18 packaging orgs.
2.0.0-beta82 (2018-02-02)¶
Update salesforce-bulk package to version 2.0.0
Fix issue in bulk load data task
2.0.0-beta81 (2018-01-18)¶
Filter SObjects by record type in bulk data retrieve
Fix issue in removing XML elements from file
2.0.0-beta80 (2018-01-08)¶
The deploy tasks now automatically clean all meta.xml files in the deployed metadata of any namespace references by removing the <packageVersions> element and children. This allows CumulusCI to fully manage the dependencies and avoids the need for new commits to change referenced versions in meta.xml files.
: - The default functionality can be disabled with the by setting [clean_meta_xml]{.title-ref} to False
Github dependencies can now point to a specific tag in the repository. The tag is used to determine the version to install for the dependency if the repository has a namespace configured and will be used to determine which unpackaged metadata to deploy.
2.0.0-beta79 (2017-11-30)¶
Fixes ##540: Using a custom [prefix_beta]{.title-ref} fails if releases with the same version but different prefix already exist in the repository. Changed to use [tag_name]{.title-ref} instead of [name]{.title-ref} to check if the release already exists in Github.
2.0.0-beta78 (2017-11-22)¶
Resolving a few issues from beta77:
A bug in BaseKeychain.create_scratch_org was causing the creation of ScratchOrgConfig’s with a days value of None. This caused issues with subsequent calls against the org.
Fixed output from new logging in namespace injection
Switch to using org_config.date_created to check if an org has been created
Fix bug in recreation of an expired scratch org
2.0.0-beta77 (2017-11-22)¶
New Salesforce DX tasks: dx-convert-from, dx-convert-to, dx-pull, and dx-push
New flow for creating production releases (use with caution!): release-production
Scratch org configs can now specify [days]{.title-ref} as an option which defaults to 1. The default for a scratch config can be overridden in [cci org scratch]{.title-ref} with the [–days N]{.title-ref} option
[cci org remove]{.title-ref} will now attempt to first delete a scratch org if one was already created
[cci org scratch]{.title-ref} will prevent you from overwritting a scratch config that has already created a scratch org (which would create an orphaned scratch org) and direct you to use [cci org remove]{.title-ref} instead.
[cci org list]{.title-ref} now shows the duration days, elapsed days, and if an org is expired.
[cci org info]{.title-ref} now shows the expiration date for scratch orgs
All [cci]{.title-ref} commands that update an org config will now attept to automatically recreate an expired scratch org
New namespace inject token strings are supported for injecting namespaces into Lightning Component references:
%%%NAMESPACE_OR_C%%%*: Replaced with either ‘your_namespace’ (unmanaged = False) or ‘c’ (unmanaged = True)
%%%NAMESPACED_ORG_OR_C%%%*: Replaced with either ‘your_namespace’ (namespaced_org = True) or ‘c’ (namespaced_org = False)
Deleted all tasks and code related to [apextestsdb]{.title-ref} since its functionality is now integrated into MetaCI and no longer used
2.0.0-beta76 (2017-11-14)¶
Fix bug in namespace injection
Add option to print org info as JSON
2.0.0-beta75 (2017-11-07)¶
Fix syntax for github dependency with [–extend]{.title-ref} option on [cci project init]{.title-ref}
2.0.0-beta74 (2017-11-07)¶
Default to Salesforce API version 41.0
2.0.0-beta73 (2017-11-07)¶
Fix bug in creating the [dev_namespaced]{.title-ref} scratch org config from [cci project init]{.title-ref}
2.0.0-beta72 (2017-11-06)¶
Fix bug in setting namespace from [cci project init]{.title-ref}
2.0.0-beta71 (2017-11-06)¶
Update docs, including tutorial for Windows (thanks Dave Boyce!)
Add missing “purge on delete” option for BaseUninstallMetadata
Fix crash when decoding certain strings from the Metadata API response
Add support for featureParameter* metadata types (thanks Christian Szandor Knapp!)
2.0.0-beta70 (2017-10-30)¶
Fix issue in zip file processing that was introduced in v2.0.0b69
2.0.0-beta69 (2017-10-27)¶
cumulusci.core has been made compatible with Python 3!
[cci project init]{.title-ref} has been upgraded
Better prompt driven user experience with explanations of each prompt
[–extend <repo_url>]{.title-ref} option to set up a recursive dependency on another CumulusCI project’s Github repository
Creates [sfdx-project.json]{.title-ref} if it doesn’t already exist
Creates and populates the [orgs/]{.title-ref} directory if it does not already exist. The directory is populated with starter scratch org shape files for the 4 main scratch org configs in CumulusCI: [beta.json]{.title-ref}, [dev.json]{.title-ref}, [feature.json]{.title-ref}, [release.json]{.title-ref}
Fix issue with namespace injection
[push_*]{.title-ref} tasks now accept [now]{.title-ref} for the [start_time]{.title-ref} option which will start the push upgrade now (technically 5 seconds from now but that’s better than 5 minutes).
2.0.0-beta68 (2017-10-20)¶
Configure [namespace_inject]{.title-ref} for [deploy_post_managed]{.title-ref}
2.0.0-beta67 (2017-10-20)¶
Fix bug where auto-created scratch orgs weren’t getting the [scratch]{.title-ref} attribute set properly on their [ScratchOrgConfig]{.title-ref} instance.
2.0.0-beta66 (2017-10-20)¶
Configure [namespace_inject]{.title-ref} for deploy-post
Fix the [–debug]{.title-ref} flag on [cci task run]{.title-ref} and [cci flow run]{.title-ref} to allow debugging of exceptions which are caught by the CLI such as MetadataApiError, MetadataComponentError, etc.
2.0.0-beta65 (2017-10-18)¶
Breaking Changes¶
If you created custom tasks off of [DeployNamespaced]{.title-ref} or [DeployNamespacedBundles]{.title-ref}, you will need to switch to using [Deploy]{.title-ref} and [DeployBundles]{.title-ref}. The recommended configuration for such custom tasks is represented below. In flows that need to inject the actual namespace prefix, override the [unmanaged]{.title-ref} option .. :
custom_deploy_task: class_path: cumulusci.tasks.salesforce.Deploy options: path: your/custom/metadata namespace_inject: $project_config.project__package__namespace unmanaged: False
Enhancements¶
The [cci]{.title-ref} CLI will now check for new versions and print output at the top of the log if a new version is available
The [cci]{.title-ref} keychain now automatically creates orgs for all named scratch org configs in the project. The orgs are created with the same name as the config. Out of the box, CumulusCI comes with 4 org configs: [dev]{.title-ref}, [feature]{.title-ref}, [beta]{.title-ref}, and [release]{.title-ref}. You can add additional org configs per project using the [orgs]{.title-ref} -> [scratch]{.title-ref} section of the project’s [cumulusci.yml]{.title-ref}. With this change, [cci org list]{.title-ref} will always show at least 4 orgs for any project. If an org already exists in the keychain, it is not touched and no scratch org config is auto-created for that config. The goal is to eliminate the need to call [cci org scratch]{.title-ref} in most cases and make it easier for new users to get up and running with scratch orgs and CumulusCI.
[cci org remove <org_name>]{.title-ref} is now available to remove orgs from the keychain
Scratch orgs created by CumulusCI are now aliased using the naming format [ProjectName__org_name]{.title-ref} so you can easily run sfdx commands against scratch orgs created by CumulusCI
[cci org list]{.title-ref} now shows more information including [scratch]{.title-ref}, [config_name]{.title-ref}, and [username]{.title-ref}. NOTE: config_name will only be populated for newly created scratch configs. You can use [cci org scratch]{.title-ref} to recreate the config in the keychain.
The new flow dev-org-namespaced provides a base flow for deploying unmanaged metadata into a namespaced org such as a namespaced scratch org
All tasks which previously supported [namespace_inject]{.title-ref} now support a new option, [namespaced_org]{.title-ref}. This option is designed to handle use cases of namespaced orgs such as a namespaced scratch org. In namespaced orgs, all unmanaged metadata gets the namespace prefix even if it is not included in the package. You can now use the [namespaced_org]{.title-ref} option along with the file content token [%%%NAMESPACED_ORG%%%]{.title-ref} and the file name token [___NAMESPACED_ORG___]{.title-ref} to inject the namespace when deploying to a namespaced org. [namespaced_org]{.title-ref} defaults to False to be backwards compatible with previous functionality.
New task push-list supports easily pushing a list of OrgIds via the Push API from the CLI: [cci task run push_list -o file <file_path> -o version 1.2 –org packaging]{.title-ref}
2.0.0-beta64 (2017-09-29)¶
Show proper exit status for failed tests in heroku_ci.sh
Handle BrowserTestFailure in CLI
Fix issue that prevented auto-merging master to parent branch
2.0.0-beta63 (2017-09-26)¶
Documentation has been updated!
CumulusCI now supports auto detection of repository information from CI environments. This release includes an implementation for Heroku CI
2.0.0-beta62 (2017-09-19)¶
cci now supports both namespaced and non-namespaced scratch org configurations in the same project. The default behavior changes slightly with this release. Before, if the [sfdx-project.json]{.title-ref} had a namespace configured, all scratch orgs created via [cci org scratch]{.title-ref} would get the namespace. With the new functionality, all orgs would by default not have the namespace. You can configure individual org configs in your project’s [cumulusci.yml]{.title-ref} file by setting [namespace: True]{.title-ref} under [orgs -> scratch -> <org_name>]{.title-ref}
2.0.0-beta61 (2017-09-12)¶
Fix bug that was causing a forced token refresh with [sfdx force:org:open]{.title-ref} at the start of a flow or task run against a freshly created scratch org.
Add support for Big Objects with [__b]{.title-ref} suffix in update-package-xml and update-package-xml-managed
Fix bug that caused release notes sections to not render if only h2 content found
2.0.0-beta60 (2017-09-06)¶
Add support for Platform Events with [__e]{.title-ref} suffix in update-package-xml and update-package-xml-managed
2.0.0-beta59 (2017-09-06)¶
[YamlProjectConfig]{.title-ref} can now accept an [additional_yaml]{.title-ref} keyword argument on initialization. This allows a 5th level of layering to the [cumulusci.yml]{.title-ref} config. This change is not wired up to the CLI yet but is available for application built on top of cumulusci to use.
[cumulusci.core.flow]{.title-ref} and [cumulusci.core.keychain]{.title-ref} now have 100% test coverage
2.0.0-beta58 (2017-08-29)¶
Fix import error in []github-release-notes() task introduced in beta57
2.0.0-beta57 (2017-08-28)¶
Task options can now dynamically reference attributes from the project_config using the syntax [$project_config.attr_name]{.title-ref}. For example, [$project_config.repo_branch]{.title-ref} will resolve to the current branch when the task options are initialized.
New task [github_parent_to_children]{.title-ref} uses new functionality in [MergeBranch]{.title-ref} to support merging from a parent feature branch (ex. [feature/parent]{.title-ref}) into all child branches (ex. [feature/parent__child]{.title-ref}).
github-master-to-feature task will now skip child branches if their corresponding parent branch exists
ci-feature flow now runs [github_parent_to_children]{.title-ref} at the end of the flow
Github task classes were restructured but the [class_path]{.title-ref} used in [cumulusci.yml]{.title-ref} remains the same
New test coverage for github tasks
2.0.0-beta56 (2017-08-07)¶
Add stderr logging to scratch org info command
2.0.0-beta55 (2017-08-07)¶
Fix API version issue in Apex test runner
2.0.0-beta54 (2017-08-04)¶
Fix issue in parsing test failure details when org has objects that need to be recompiled.
2.0.0-beta53 (2017-08-04)¶
Fix “cci org config_connected_app” for Windows
Update tutorial for Windows usage
Reverse pull request order for release notes
2.0.0-beta52 (2017-08-02)¶
Release notes parsers now specified in cumulusci.yml
2.0.0-beta51 (2017-08-01)¶
New task to commit ApexDoc output
New test runner uses Tooling API to get limits data
2.0.0-beta50 (2017-07-18)¶
Fix handling of boolean command line args
2.0.0-beta49 (2017-07-10)¶
New task batch-apex-wait allows pausing until an Apex batch job completes. More details at https://github.com/SFDO-Tooling/CumulusCI/pull/372
SalesforceBrowserTest task now accepts [extra]{.title-ref} argument for specifying extra command line arguments separate from the command itself
Resolved ##369: Scratch org tokens expiring after upgrade to SFDX beta
2.0.0-beta48 (2017-06-28)¶
Upgraded to the Salesforce DX Beta (thanks to @Szandor72 for the contribution!)
NOTE: CumulusCI will no longer work with the sfdx pilot release after this version!
Replaced call to [force:org:describe]{.title-ref} with [force:org:display]{.title-ref}
Changed json response parsing to match beta format
New SFDX wrapper tasks
`SFDXBaseTask`: Use for tasks that don’t need org access
`SFDXOrgTask`: Use for sfdx tasks that need org access. The task will refresh the cci keychain org’s token and pass it to sfdx as the target org for the command
`SFDXJsonTask`: Use for building tasks that interact with sfdx via json responses
`SFDXJsonPollingTask`: Use for building tasks that wrap sfdx json responses including polling for task completion
`SFDXDeploy`: An example of using [SFDXJsonPollingTask]{.title-ref} to wrap [force:mdapi:deploy]{.title-ref}
Fixed infinite loop if setting scratch org password fails
2.0.0-beta47 (2017-06-26)¶
Fix typo in tasks.util
2.0.0-beta46 (2017-06-23)¶
Fix bug in implementation of the [–no-prompt]{.title-ref} flag when sentry is configured
2.0.0-beta45 (2017-06-23)¶
The new [BaseSalesforceApiTask]{.title-ref} class replaces [BaseSalesforceApiTask]{.title-ref}, [BaseSalesforceBulkApiTask]{.title-ref}, and [BaseSalesforceToolingApiTask]{.title-ref} by combining them into a single task class with access to all 3 API’s via [self.sf]{.title-ref}, [self.tooling]{.title-ref}, and [self.bulk]{.title-ref} from inside a task instance.
Added integration with sentry.io
Use [cci service connect sentry]{.title-ref} to enable the sentry service
All task execution exceptions will be logged as error events in sentry
[cci task run]{.title-ref} and [cci flow run]{.title-ref} will now show you the url to the sentry event if one was registered and prompt to open in a browser.
[cci task run]{.title-ref} and [cci flow run]{.title-ref} now accept the [–no-prompt]{.title-ref} option flag for running in non-interactive mode with the sentry service configured. Use this if you want to log build errors in sentry but not have builds fail due to a hanging prompt.
If a scratch org password has expired, it is now regenerated when calling [cci org info]{.title-ref}
New task unschedule-apex was added to unschedule background jobs and added to the start of the [dev_org]{.title-ref} flow
update-meta-xml task now uses the project’s dependencies as the namespace/version to update in the meta.xml files
The bulkdata mapping now properly supports Record Types
Fixed a bug with BulkDataQuery where local references weren’t getting properly set
New CumulusCI Branch & Release Overview diagram presention is available at http://developer.salesforce.org/CumulusCI/diagram/process_overview.html Use left/right arrow buttons on your keyboard to navigate through the presentation.
CumulusCI is now being built by Heroku CI using the config in [app.json]{.title-ref}
2.0.0-beta44 (2017-06-09)¶
Fix issue in update-dependencies when a github dependency depends on another github dependency
2.0.0-beta43 (2017-06-09)¶
Fix issue in [mrbelvedere_publish]{.title-ref} where the new zip_url dependencies weren’t being skipped
2.0.0-beta42 (2017-06-09)¶
Move github dependency resolution logic into project_config.get_static_dependencies() for reuse in tasks other than UpdateDependencies
Fixed the mrbelvedere_publish task when using github references
Improved output from parsing github dependencies
Fix issue in [BulkDataQuery]{.title-ref} character encoding when value contains utf8 special characters
2.0.0-beta41 (2017-06-07)¶
The [dependencies]{.title-ref} section in cumulusci.yml now supports the [skip]{.title-ref} option for Github dependencies which can be used to skip specific subfolders under [unpackaged/]{.title-ref} in the target repository
New task class BulkDataQuery reverses the BulkDataLoad and uses the mapping to build SOQL queries to capture the data in the mapping from the target org. The data is written to a database that can then be used by BulkDataLoad to load into a different org.
The Delete util task now uses the glob library so it can support paths with wildcards like src/*
New tasks meta-xml-api and meta-xml-dependencies handle updating [*-meta.xml]{.title-ref} files with api versions or underlying package versions.
2.0.0-beta40 (2017-06-03)¶
More enhancements to update-dependencies including the ability to handle namespace injection, namespace stripping, and unmanaged versions of managed repositories. See the new doc at http://cumulusci.readthedocs.io/en/latest/dependencies.html
2.0.0-beta39 (2017-06-02)¶
Fix new bug in update-dependencies which caused failure when running against an org that already has a required package installed
2.0.0-beta38 (2017-06-01)¶
update-dependencies now properly handles references to a github repository that itself contains dependencies in its cumulusci.yml file
update-dependencies now handles deploying unmanaged metadata from subfolders under unpackaged/pre of a referenced Github repository
The [dependencies]{.title-ref} section of [cumulusci.yml]{.title-ref} now supports installing from a zip of metadata hosted at a url if you provide a [zip_url]{.title-ref} and optionally a [subfolder]{.title-ref}
2.0.0-beta37 (2017-06-01)¶
update-dependencies now supports dynamically referencing other Github repositories configured with a cumulusci.yml file. The referenced repository’s cumulusci.yml is parsed and the dependencies are included. Also, the Github API is used to find the latest release of the referenced repo if the cumulusci.yml has a namespace configured. Welcome to dynamic package dependency management ;)
[cci task run]{.title-ref} now supports the option flags [–debug-before]{.title-ref} and [–debug-after]{.title-ref}
Fix for JUnit output rendering in run_tests
2.0.0-beta36 (2017-05-19)¶
Flows can now accept arguments in the CLI to override task options
[cci flow run install_beta -o install_managed_beta__version “1.0 (Beta 123)”]{.title-ref}
Flows can now accept arguments to in the CLI to skip tasks
[cci flow run ci_feature –skip run_tests_debug –skip deploy_post]{.title-ref}
Anonymous apex failures will now throw an exception and fail the build in execute-anon
Fixes ##322: local variable ‘message’ referenced before assignment
2.0.0-beta35 (2017-05-19)¶
New task execute-anon is available to run anonymous apex and takes the extra task option [apex]{.title-ref}
2.0.0-beta34 (2017-05-16)¶
Fixes ##317: ERROR: Invalid version specified
2.0.0-beta33 (2017-05-11)¶
cci org connect and cci org scratch now accept the –default option flag to set the newly connected org as the default org for the repo
cci org scratch now accepts a new option, –devhub <username>, which allows you to specify an alternate devhub username to use when creating the scratch org
The SalesforceBrowserTest class now throws a BrowserTestFailure if the command returns an exit status of 1
Scratch org creation no longer throws an exception if it fails to set a random password on the newly created org
Push API task enhancements:
Push org lists (text files with one org ID per line) can now have comments and blank lines. The first word on the line is assumed to be the org ID and anything after that is ignored.
Fixes ##294
Fixes ##306
Fixes ##208
2.0.0-beta32 (2017-05-04)¶
Scratch orgs now get an auto-generated password which is available via [cci org info]{.title-ref}
Added metadata mapping for StandardValueSets to fix ##310
Throw nicer exceptions when scratch org interaction fails
2.0.0-beta31 (2017-04-12)¶
Use UTC for all Salesforce API date/time fields
Fix issue with listing metadata types
Add generic polling method to BaseTask
2.0.0-beta30 (2017-04-04)¶
New task list_metadata_types
[push upgrades] Fix push request status Cancelled –> Canceled
[push upgrades] Fix datetime namespace issues
[pyinstaller] Import project-level modules with run-time hook
2.0.0-beta29 (2017-04-04)¶
Report push status if start time is less than 1 minute in the future
2.0.0-beta28 (2017-03-30)¶
Fix bug in Push API batch retry logic introduced in beta25
2.0.0-beta27 (2017-03-29)¶
Skip org in push if statusCode is UKNOWN_EXCEPTION
2.0.0-beta26 (2017-03-29)¶
Fixes ##278: Push upgrade raises exception for DUPLICATE_VALUE statusCode
2.0.0-beta25 (2017-03-28)¶
Fixes ##277: Push API tasks now correctly handle errors in individual orgs in a batch when scheduling a push job
2.0.0-beta24 (2017-03-27)¶
Fixes ##231: Handle unicode in package.xml generation
Fixes ##239: Replace fix for windows path issues from beta23 with a better implementation
Fixes ##275: Properly pass purge_on_delete option value in uninstall_packaged_incremental
2.0.0-beta23 (2017-03-22)¶
Fixes ##239: Add local path to import path when looking up classes. This should fix an error that appeared only in Windows
2.0.0-beta22 (2017-03-20)¶
[]github-release-notes() now supports the [link_pr]{.title-ref} option to add links to the pull request where each line of content came from
Fixes ##266: update-dependencies now supports the [purge_on_delete]{.title-ref} option to allow running against production orgs
Fixes ##267: package.xml generation now skips RecordType when rendering in delete mode
2.0.0-beta21 (2017-03-17)¶
Fix parsing of OrgId from the access token using the new sfdx CLI
2.0.0-beta20 (2017-03-17)¶
Switch to using the [sfdx]{.title-ref} CLI for interacting with scratch orgs. If you use [cci]{.title-ref} with scratch orgs, this release will no longer work with the [heroku force:*]{.title-ref} commands from the prior Salesforce DX release.
Upgrades to release notes generator
Content is now grouped by subheading under each heading
Better error message is thrown if a lightweight tag is found when an annotated tag is needed
2.0.0-beta19 (2017-03-15)¶
Fixes ##261: cci org info should refresh token first
2.0.0-beta18 (2017-03-14)¶
Skip deleting Scontrols in incremental delete
Escape package name when generating package.xml
2.0.0-beta17 (2017-03-14)¶
OrgConfig and subclasses now support self.username to get the username
Flows no longer have access to task instance attributes for subsequent task options. Instead, custom task classes should set their task return_values member.
Improve printing of org info when running tasks from a flow by only printing once at the start of flow. All tasks have an optional self.flow attribute now that contains the flow instance if the task is being run from a flow.
BaseTask now includes methods for handling retry logic. Implemented in the InstallPackageVersion and RunApexTests
New task retrieve-unpackaged can be used to retrieve metadata from a package.xml manifest
Fixes ##240 - CumulusCI should now properly handle escaping special characters in xml where appropriate
Fixes ##245 - Show config values in task info
Fixes ##251 - ApiRetrieveUnpackaged _clean_package_xml() can’t handle metadata with spaces in names
Fixes ##255 - ApiListMetadata does not list certain metadata types with default folder value
2.0.0-beta16 (2017-02-17)¶
Allow batch size to be configured for push jobs with the [batch_size]{.title-ref} job
2.0.0-beta15 (2017-02-15)¶
Bug fix release for bug in update-admin-profile from the beta 14 release changes to the ApiRetrieveUnpackaged class
2.0.0-beta14 (2017-02-15)¶
The new [RetrieveReportsAndDashboards]{.title-ref} task class that can retrieve all reports and dashboards from a specified list of folders
Documentation improvements contributed by @tet3
Include userinfo in the OrgConfig, and print username and org id at the beginning of every task run. Contribution by @cdcarter
[project_local_dir]{.title-ref} (e.g., [~/.cumulusci/NPSP-Extension-Template/]{.title-ref}, home of the encrypted keychain and local override config) now rely on the project name configured in cumulusci.yml instead of the existence of a git remote named origin. Contribution by @cdcarter
2.0.0-beta13 (2017-02-09)¶
New services registration support added by community contribution from @cdcarter
Services and their schemas can now be defined in the cumulusci.yml file. See https://github.com/SFDO-Tooling/CumulusCI/issues/224 for more details until docs are fully updated
[cci services list]{.title-ref}
[cci services show github]{.title-ref}
[cci services connect github]{.title-ref}
Improved error handling for metadata deployment failures:
Metadata deployments now throw more specific errors when appropriate: MetadataComponentFailure, ApexTestFailure, or MetadataApiError
Output for each component failure on a deploy now includes more information such as the column number of the error
release-beta now ignores errors in the []github-release-notes() process by default
2.0.0-beta12 (2017-02-02)¶
Throw better exceptions if there are failures creating or deleting scratch orgs
2.0.0-beta11 (2017-02-01)¶
Fixes and new functionality for update-package-xml-managed task.
Added support for project -> package -> name_managed in the cumulusci.yml file to specify a different package name to use when deploying to the packaging org.
Fixed bug with install_class and uninstall_class handling
2.0.0-beta10 (2017-01-20)¶
Completed removed CumulusCI 1 code from the repository and egg. The egg should be 17MB smaller now.
Removed [cumulusci.tasks.ant.AntTask]{.title-ref}. Please replace any usage with [cumulusci.tasks.command.Command]{.title-ref} or [cumulusci.tasks.command.SalesforceCommand]{.title-ref}
Removed the [update_meta_xml]{.title-ref} task for now since it was the only task relying on Ant. A new and much better Python based implementation will be coming soon.
2.0.0-beta9 (2017-01-20)¶
A few upgrades to the Command task:
No longer strip left side whitespace from output to preserve indentation
New method [_process_output]{.title-ref} can be overridden to change how output lines are processed
New method [_handle_returncode]{.title-ref} can be overridden to change how exit status is handled
2.0.0-beta8 (2017-01-19)¶
Added new task classes util.DownloadZip, command.SalesforceCommand, and command.SalesforceBrowserTestCommand that can be mapped in individual projects to configure browser tests or other commands run against a Salesforce org. The commands are automatically passed a refreshed [SF_ACCESS_TOKEN]{.title-ref} and [SF_INSTANCE_URL]{.title-ref} environment variables.
Added new CLI commands [cci project connect_saucelabs]{.title-ref} and [cci project show_saucelabs]{.title-ref}
Added ci-install-beta flow that uninstalls the previous managed version then installs the latest beta without running apex tests
Added new method cumulusci.utils.download_extract_zip to download and extract a zip including re-rooting the zip to a subfolder.
All Salesforce tasks now delete any tempdirs they create to prevent wasting disk space
2.0.0-beta7 (2017-01-17)¶
[run_tests_debug]{.title-ref} now ignores all non-test methods including any method decorated with @testSetup
2.0.0-beta6 (2017-01-17)¶
Return full info when a component failure occurs on a Metadata API deployment. Previously only the problem was shown without context like file name and line number making it difficult to figure out what caused the failure.
[run_tests_debug]{.title-ref} now ignores the @testSetup method when parsing debug logs. Previously it would throw an error if tests used @testSetup
2.0.0-beta5 (2017-01-16)¶
Fixes for the unmanaged-ee flow to fix a bug where avialableFields elements were not properly being stripped from fieldsSets in .object files
Fixes for github-master-to-feature where merge conflicts would throw exception rather than creating a pull request as expected
2.0.0-beta4 (2017-01-13)¶
Add update-admin-profile to all flows that deploy or install to a Salesforce org. Note that this adjusted the task numbers in some flows so you should double check your project specific flow customizations.
2.0.0-beta3 (2017-01-13)¶
Remove
deploy-post-managedtask from the default ci-master flow. Deploying the unpackaged/post content to the packaging org risks the spider accidentally including some of it in the package. Projects that want to rundeploy-post-managedagainst the packaging org can extend ci-master in their cumulusci.yml file to add it.
2.0.0-beta2 (2017-01-12)¶
Fix a bug in project_config.get_latest_version() with tags that don’t match either the beta or release prefix.
2.0.0-beta1 (2017-01-12)¶
Move into the master branch!
Changed primary CLI command to [cci]{.title-ref} and left [cumulusci2]{.title-ref} available for legacy support
Changed all docs to use [cci]{.title-ref} command in examples
Peg push api tasks to api version 38.0 rather than project api version
Added 2 new flows: install-beta and install-prod which install the latest managed version of the package with all dependencies but without running tests
release-beta flow now runs github-master-to-feature at the end of the flow
2.0.0-alpha42 (2017-01-10)¶
Metadata API calls now progressively wait longer between each status check to handle calls with long Pending times. Each check also now outputs a line saying how long it will sleep before the next check.
2.0.0-alpha41 (2017-01-06)¶
Fix bug in uninstall-packaged-incremental where the task would error out if no metadata was found to delete
2.0.0-alpha40 (2017-01-06)¶
uninstall-packaged-incremental task now skips the deploy step if now metadata was found to be deleted
2.0.0-alpha39 (2017-01-06)¶
Two new task classes exist for loading and deleting data via Bulk API. Note that there are no default task mappings for these classes as the mappings should be project specific. Define your own mappings in your project’s cumulusci.yml file to use them.
cumulusci.tasks.bulkdata.LoadData: Loads relational data from a sqlite database into Salesforce objects using a yaml file for mapping
cumulusci.tasks.bulkdata.DeleteData: Deletes all records from specified objects in order of object list
Added support for customPermissions
Added new Command task that can be used to call arbitrary commands with configurable environment variables
2.0.0-alpha38 (2016-12-28)¶
Scratch orgs now cache the org info locally during flow execution to prevent multiple calls out to the Heroku CLI that are unnecessary
Scratch org calls now properly capture and print both stdout and stderr in the case of an exception in calls to Heroku CLI
[run_tests_debug]{.title-ref} now deletes existing TraceFlag objects in addition to DebugLevels
Fix bug in push-all and push-sandbox
Push tasks now use timezone for start_date option
2.0.0-alpha37 (2016-12-20)¶
[]github-release-notes() now correctly handles the situation where a merge commit’s date can be different than the PR’s merged_at date in Github by comparing commit sha’s
2.0.0-alpha36 (2016-12-20)¶
github-release now works with an existing tag/ref and sleeps for 3 seconds after creating the tag to allow Github time to catch up
2.0.0-alpha35 (2016-12-20)¶
Remove github-release since the Github API doesn’t support querying draft releases
2.0.0-alpha34 (2016-12-20)¶
Fix bug with github-release that was causing validation errors from Github
2.0.0-alpha33 (2016-12-20)¶
[]github-release-notes() now raises an exception in [publish]{.title-ref} mode if the release doesn’t exist instead of attempting to create it. Use github-release to create the release first before calling []github-release-notes()
Fix a bug with dynamic task option lookup in flows
2.0.0-alpha32 (2016-12-19)¶
Move logger configuration out of core and into CLI so other implementations can provide their own logger configurations
Added [retry_interval]{.title-ref} and [retry_interval_add]{.title-ref} options to install-beta to introduce a progressive delay between retry attempts when the package is unavailable
2.0.0-alpha30 (2016-12-13)¶
IMPORANT This release changes the yaml structure for flows. The new structure now looks like this:
flows: flow_name: tasks: 1: task: deploy 2: task: run_testsSee the new flow customization examples in the cookbook for examples of why this change was made and how to use it: http://cumulusci.readthedocs.io/en/latest/cookbook.html#custom-flows-via-yaml
2.0.0-alpha30 (2016-12-12)¶
Bug fixes submitted by @ccarter:
uninstall-post was failing to substitute namespaces
new util method [findRename]{.title-ref} to rename files with a token in their name
Bug fix with Unicode handling in run_tests_debug
2.0.0-alpha29 (2016-12-12)¶
Require docutils to supprot rst2ansi
2.0.0-alpha28 (2016-12-12)¶
Modified tasks and flows to properly re-raise exceptions
2.0.0-alpha27 (2016-12-12)¶
[cci]{.title-ref} should now throw the direct exception rather than making it look like the exception came through click
[cci task doc]{.title-ref} command outputs RST format documentation of all tasks
New doc with info on all tasks: http://cumulusci.readthedocs.io/en/latest/tasks.html
2.0.0-alpha26 (2016-12-09)¶
Bug fix, missing import of re in core/config.py
2.0.0-alpha25 (2016-12-09)¶
Fixed run_tests and run_tests_debug tasks to fail throwing an exception on test failure
run_tests_debug now stores debug logs in a tempdir
Have the CLI handle ApexTestException events with a nicer error rather than a full traceback which isn’t helpful to determining the apex failure
BaseMetadataApi will now throw MetadataApiError after a Failed status is set
BaseFlow now throws the original exception rather than a more generic one that obscures the actual failure
2.0.0-alpha24 (2016-12-09)¶
Bug fix release, flow_run in the CLI should accept debug argument and was throwing and error
2.0.0-alpha23 (2016-12-09)¶
[cci org browser]{.title-ref} now saves the org back to the keychain. This fixes an issue with scratch orgs where a call to org browser on a scratch org that hasn’t been created yet gets created but doesn’t persist after the command
[task run]{.title-ref} and [flow run]{.title-ref} now support the [–debug]{.title-ref} flag which will drop you into the Python interactive debugger (pdb) at the point of the exception.
Added Cookbook to the docs: http://cumulusci.readthedocs.io/en/latest/cookbook.html
[flow run]{.title-ref} with the [–delete-org]{.title-ref} option flag and scratch orgs no longer fails the flow if the delete org call fails.
Fixed the deploy-post task which has having errors with namespaced file names
Fixed update-admin-profile to properly update the profile. This involved fixing the utils [findReplace]{.title-ref} and [findReplaceRegex]{.title-ref}.
Reworked exceptions structure and ensure that tasks throw an exception where approriate.
2.0.0-alpha22 (2016-12-02)¶
Fix for bug in deploy_post when using the filename token to merge namespace into a filename
2.0.0-alpha21 (2016-12-01)¶
Added support for global and project specific orgs, services, and connected app. The global credentials will be used by default if they exist and individual projects an override them.
Orgs still default to creating in the project level but the [–global]{.title-ref} flag can be used in the CLI to create an org
[config_connected_app]{.title-ref} command now sets the connected app as global by default. Use the ‘–project’ flag to set as a project override
[connect_github]{.title-ref}, [connect_mrbelvedere]{.title-ref}, and [connect_apextestsdb]{.title-ref} commands now set the service as global by default. Use the ‘–project’ flag to set as a project override
2.0.0-alpha20 (2016-11-29)¶
Remove pdb from BaseFlow.__call__ (oops)
2.0.0-alpha19 (2016-11-29)¶
Fix IOError issue with update_admin_profile when using the egg version
Changed cci task_run and flow_run commands to no longer swallow unknown exceptions so a useful error message with traceback is shown
Centralized loggers for BaseConfig, BaseTask, and BaseFlow under cumulusci.core.logger and changed logs to always write to a temp file available as self.log_file on any config, task, or flow subclass.
2.0.0-alpha18 (2016-11-17)¶
New task [apextestsdb_upload]{.title-ref} uploads json test data to an instance of ApexTestsDB
Fixed bug in CLI when running tasks that don’t require an org
Include mappings for Community Template metadata types in package.xml generator
2.0.0-alpha17 (2016-11-15)¶
Community contributions by @cdcarter
query task using the Bulk Data API
[–login-url]{.title-ref} option on [cci org connect]{.title-ref}
Salesforce DX wrapper
NOTE: Requires developer preview access to Salesforce DX
[cci org scratch <config_name> <org_name>]{.title-ref} creates a wrapper for a scratch org in your keychain
Tasks and Flows run against a scratch org will create the scratch org if needed
[cci org scratch_delete <org_name>]{.title-ref} deletes a scratch org that was created by running a task or flow
[cci flow run]{.title-ref} now supports the [–delete-org]{.title-ref} option to delete a scratch org at the end of the flow
[BaseSalesforceDXTask]{.title-ref} wraps the heroku force:* commands. The dx-push task is provided as an example.
NOTE: Currently the command output is buffered and only outputs when the command completes.
Integration with mrbelvedere
mrbelvedere-publish task publishes a beta or release tag to an existing package on mrbelvedere
Flow changes
ci-feature now runs tests as part of the flow
New flow task configuration [ignore_failure]{.title-ref} can be used to ignore a failure from a particular task in the flow
CUMULUSCI_KEY is no longer required if using a keychain class with the encrypted attribute set to False such as the EnvironmentProjectKeychain
Refactored OAuth token refresh to be more centralized and raise a proper exception if there is an issue
The org keychain now correctly uses the instance url when appropriate
Calls to runTestsAsynchronous in the Tooling API are now done via POST instead of GET
2.0.0-alpha16 (2016-11-3)¶
Fix bug in SOAP calls to MDAPI with newer versions of the requests library
This version was used to record the demo screencast: https://asciinema.org/a/91555
2.0.0-alpha15 (2016-11-3)¶
Fix CLI bug in new exception handling logic
2.0.0-alpha14 (2016-11-3)¶
Fix version number
Fix bug in BaseSalesforceBulkApiTask (thanks @cdcarter)
2.0.0-alpha13 (2016-11-3)¶
Nicer log output from tasks and flows using [coloredlogs]{.title-ref}
Added handling for packed git references in the file .git/packed-refs
Docs now available at http://cumulusci.readthedocs.io
Tasks and Flows run through the CLI now show a more simple message if an exception is thrown
2.0.0-alpha12 (2016-11-2)¶
Automatic detection of latest production and beta release via Github Releases
project_config.get_latest_release() added to query Github Releases to find the latest production or beta release version
InstallPackage now accepts the virtual versions ‘latest’ and ‘latest_beta’ as well as specific versions for the version option
New flows:
ci_feature: Runs a full deployment of the unmanaged code for testing in a feature org
ci_master: Runs a full deployment of the managed version of the code into the packaging org
ci_beta: Installs the latest beta and runs all tests
ci_release: Installs the latest release and runs all tests
release_beta: Uploads a beta release of the metadata in the packaging org, creates a Github Release, and generates release notes
Removed the hard coded slots in the keychain for github, mrbelvedere, and apextestsdb and replaced with a more generic concept of named keychain services. keychain.get_service(‘name’) retrieves a named service. The CLI commands for setting github, mrbelvedere, and apextestsdb were modified to write the service configs to the new structure.
Flow tasks can now access previous tasks’ attributes in their options definitions. The syntax is ^^task_name.attr1.attr2
Flow output is now nicer showing the flow configuration and the active configuration for each task before execution
New tasks
update_package_xml_managed: Create a new package.xml from the metadata in src/ with attributes only available when deploying to packaging org
run_tests: Runs matching apex tests in parallel and generate a JUnit report
run_tests_debug: Runs matching apex tests in parallel, generates JUnit report, captures debug logs, and parses debug logs for limits usage outputing results to test_results.json
run_tests_managed: Runs matching apex tests in parallel from the package’s namespace and generate a JUnit report
2.0.0-alpha11 (2016-10-31)¶
project_config.repo_root is now added to the python syspath, thanks @cdcarter for the contribution
Tasks for the new Package Upload API
upload_beta: Uploads a beta release of the metadata currently in the packaging org
upload_production: Uploads a production release of the metadata currently in the packaging org
Dependency management for managed packages:
update_dependencies: Task that ensures the target org has all dependencies installed at the correct version
Dependencies are configured using the dependencies: heading in cumulusci.yml under the project: section
Integrated salesforce-bulk and created BaseSalesforceBulkApiTask for building bulk data tasks
Added [cci version]{.title-ref} command to print out current package version, thanks @cdcarter for the contribution
2.0.0-alpha10 (2016-10-28)¶
More pure Python tasks to replace ant targets:
create_ee_src
retrieve_packaged
retrieve_src
revert_ee_src
uninstall_packaged_incremental
update_admin_profile
New flow:
unmanaged_ee: Deploys unmanaged code to an EE org
New cumulusci.utils
CUMULUSCI_PATH: The absolute path to the root of CumulusCI
findReplaceRegex: Recursive regex based search/replace for files
zip_subfolder: Accepts a zipfile and path, returns a zipfile with path as root
Fix bug where repo_name was not being properly handled if it origin ended in .git
2.0.0-alpha9 (2016-10-27)¶
Switch to using [plaintable]{.title-ref} for printing text tables in the following CLI commands:
cci org list
cci task list
cci task info
cci flow list
Easier project set up: [cci project init]{.title-ref} now prompts for all project values using the global default values
More pure Python Metadata API tasks:
create_package
install_package
uninstall_managed
uninstall_packaged
uninstall_pre
uninstall_post
uninstall_post_managed
New tasks to interact with the new PackageUploadRequest object in the Tooling API
upload_beta
upload_production
Python task to replace deployUnpackagedPost ant target with support for replacing namespace prefix in filenames and file contents
deploy_post
deploy_post_managed
Python tasks to replace createManagedSrc and revertManagedSrc ant targets
create_managed_src
revert_managed_src
2.0.0-alpha8 (2016-10-26)¶
New tasks for push upgrading packages
push_all: Pushes a package version to all available subscriber orgs
ex: cci task run –org packaging -o version 1.1 push_all
push_qa: Pushes a package version to all org ids in the file push/orgs_qa.txt in the repo
ex: cci task run –org packaging -o version 1.1 push_qa
push_sandbox: Pushes a package version to all available sandbox subscriber orgs
ex: cci task run –org packaging -o version 1.1 push_sandbox
push_trial: Pushes a package version to all org ids in the file push/orgs_trial.txt in the repo
ex: cci task run –org packaging -o version 1.1 push_trial
Configurable push tasks in cumulusci.tasks.push.tasks:
SchedulePushOrgList: uses a file with one OrgID per line as the target list
SchedulePushOrgQuery: queries PackageSubscribers to select orgs for the target list
Additional push tasks can be built by subclassing cumulusci.tasks.push.tasks.BaseSalesforcePushTask
2.0.0-alpha7 (2016-10-25)¶
New commands for connecting to other services
cci project connect_apextestsdb: Stores ApexTestDB auth configuration in the keychain for use by tasks that require ApexTestsDB access
cci project connect_github: Stores Github auth configuration in the keychain for use by tasks that require Github access
cci project connect_mrbelvedere: Stores mrbelvedere auth configuration in the keychain for use by tasks that require access to mrbelvedere
cci project show_apextestsdb: Shows the configured ApexTestsDB auth info
cci project show_github: Shows the configured Github auth info
cci project show_mrbelvedere: Shows the configured mrbelvedere auth info
Github Tasks
The new BaseGithubTask wraps the github3.py API library to allow writing tasks targetting Github
The following new Github tasks are implemented on top of BaseGithubTask:
github_clone_tag: Clones one git tag to another via the Github API
github_master_to_feature: Merges the HEAD commit on master to all open feature branches via the Github API
github_release: Creates a Release via the Github API
github_release_notes: Generates release notes by parsing merged Github pull request bodies between two tags
BaseTask now enforces required task_options raising TaskOptionError if required options are missing
Restructured the project: heading in cumulusci.yml
2.0.0-alpha6 (2016-10-24)¶
Moved the build and ci directories back to the root so 2.0 is backwards compatible with 1.0
Allow override of keychain class via CUMULUSCI_KEYCHAIN_CLASS env var
New keychain class cumulusci.core.keychain.EnvironmentProjectKeychain for storing org credentials as json in environment variables
Tasks now support the salesforce_task option for requiring a Salesforce org
The new BaseSalesforceToolingApi task wraps simple-salesforce for building tasks that interact with the Tooling API
cumulusci org default <name>
Set a default org for tasks and flows
No longer require passing org name in task run and flow run
–unset option flag unsets current default
cumulusci org list shows a * next to the default org
BaseAntTask split out into AntTask and SalesforceAntTask
cumulusci.tasks.metadata.package.UpdatePackageXml:
Pure python based package.xml generation controlled by metadata_map.yml for mapping in new types
Wired into the update_package_xml task instead of the old ant target
130 unit tests and counting, and our test suite now exceeds 1 second!
2.0.0-alpha5 (2016-10-21)¶
Update README
2.0.0-alpha4 (2016-10-21)¶
Fix imports in tasks/ant.py
2.0.0-alpha3 (2016-10-21)¶
Added yaml files to the MANIFEST.in for inclusion in the egg
Fixed keychain import in cumulusci.yml
2.0.0-alpha2 (2016-10-21)¶
Added additional python package requirements to setup.py for automatic installation of dependencies
2.0.0-alpha1 (2016-10-21)¶
First release on PyPI.