Releases: SFDO-Tooling/CumulusCI
2.4.2
- The
purgeOnDelete
flag for thedeploy
task 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
pipx
to install CumulusCI on Windows,
so that you don't have to set up a virtualenv manually.
2.4.1
Changes:
- Updated the default Salesforce Metadata API version to 45.0
- The scratch org definition files generated by
cci project init
now useorgPreferenceSettings
instead of the deprecatedorgPreferences
. - The
metadeploy_publish
task now defaults to describing tasks based onDeploy
as "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_password
flag is now retained when recreating an expired org. (Fixes #670)
- A project's predefined scratch org configs now default to
-
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_config
flow. Thedeploy_post
task was not injecting namespace tokens correctly. -
Fixed the
connected_app
task to work with version 7 of the sfdx CLI. (Fixes #1013) -
Robot Framework: Fixed the
Populate Field
keyword to work around intermittent problems clearing existing field values.
2.2.0
Changes:
-
Tasks can now be placed in groups for the task list! Just specify a
group
when defining the task in YAML. -
By popular request, there is now an
org import
command 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 Field
keyword now clears an existing value using keystrokes to make sure that change events are fired. - Added a
Get Namespace Prefix
keyword to the CumulusCI library to get the namespace prefix for a package. - Fixed a bug that broke opening a browser after using the
Run Task
keyword.
- The
-
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:
2.1.1
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-seleniumlibrary
3.2.0 which includes aScroll Element Into View
keyword. Wait Until Loading Is Complete
now waits for the main body of the page to renderPopulate Lookup Field
now tries several times in case there's an indexing delay- Added a
-o verbose True
option 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).
- New keywords:
- Popup notifications upon completion of a flow or task now work on Linux too, if you have the
notify-send
command fromlibnotify
. On Ubuntu, install thenotify-osd
package.
Issues Closed:
2.1.1b1
2.1.0
Changes
- Fixed the
cci project init
command, 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 version
which now works when you're
not in a project directory.) update_dependencies
task:- Added support for installing private github repositories as dependencies.
Thanks to Anthony Backhouse (@1handclapping) for the patch. Fixes #793 - Added a
dependencies
option to override the project dependencies.
- Added support for installing private github repositories as dependencies.
execute_apex
task:- Print more useful error messages when there are Apex exceptions.
robot
task:- Our logic for automatically retrying failed selenium commands has been
encapsulated into thecumulusci.robotframework.utils.selenium_retry
decorator 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. - The
Salesforce.robot
file now includes theOperatingSystem
andXML
libraries 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.
- Our logic for automatically retrying failed selenium commands has been
- 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
- 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-py3
instead 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'
COPY
command to load CSV directly. - Added a
hardDelete
option for bulk deletes. - Added a
start_step
option for bulk loads which can be used to resume loading after an error.
- The
push_failure_report
task 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
cryptography
library for handling keychain encryption.
v2.0.13
- 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
- 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.