Skip to content

Releases: SFDO-Tooling/CumulusCI

3.35.0

13 May 16:46
60e2f6d
Compare
Choose a tag to compare

Critical Changes

  • Upgraded Robot Framework to 4.x. For information about new features
    and some backward incompatibilities see the Robot Framework 4.0
    release
    notes
    .
    (#2603)
  • The update_dependencies task now guarantees to resolve unpackaged
    metadata directories (subdirectories of unpackaged/pre and
    unpackaged/post) in alphabetical order, matching the behavior of
    deploy_pre and deploy_post. unpackaged/pre/bar will deploy
    prior to unpackaged/pre/foo. The previous behavior was undefined,
    which caused rare problems. This change is critical only for
    projects that have deployment-order dependencies between unpackaged
    directories located in upstream dependencies and rely on the current
    undefined load order. (#2588)

Changes

  • The CumulusCI documentation has a new section: Testing with
    Second-Generation
    Packaging

    (#2597)
  • CumulusCI has two new service types: oauth2_client &
    marketing_cloud. These are considered experimental. (#2602)
  • The marketing_cloud service allows users to connect to a Marketing
    Cloud tenant via OAuth so that tasks that work with Marketing Cloud
    can make API calls on the user's behalf. (#2602)
  • The oauth2_client service takes information for an individual
    OAuth2 client which can then be used in place of the default client.
    This currently applies only to the marketing_cloud service. To
    setup a Marketing Cloud service with a specific OAuth2 client use:
    cci service connect marketing-cloud <name-of-service> --oauth_client <name-of-oauth-client>.
    (#2602)
  • CumulusCI has a new task: deploy_marketing_cloud_package. This
    task allows a user to pass the path to a .zip file to a Marketing
    Cloud package (downloaded from the Marketing Cloud Package Manager)
    and deploy the package via a marketing_cloud service (see above).
    Note that successfully deploying a package using this task may
    require permissions that are not generally available. (#2602)
  • The install_managed and install_managed_beta tasks now take no
    action if the specified package is already installed in the target
    org. (#2590)
  • The cci org list command can now output in JSON format by
    passing it the --json flag. (#2593)

Issues Closed

  • Fixed an issue parsing cumulusci.yml files that contained Unicode
    characters on Windows. (#2617)
  • Fixed an issue in the github_copy_subtree task where CumulusCI
    would silently generate incorrect or truncated commits when a
    directory was passed to the include task option. (#2601)
  • The deploy_pre and deploy_post tasks avoid warnings by freezing
    installer steps that match current expectations. (#2589)

v3.34.1: Bugfix for load_data

03 May 18:43
45bb088
Compare
Choose a tag to compare

We fixed a regression in the load_dataset task where some sObjects could not be loaded without explicitly turning off the new set_recently_viewed option.

v3.34.0

29 Apr 16:23
0867912
Compare
Choose a tag to compare

Critical Changes:

  • If you have custom flows that utilize the github_release task,
    they will need to be updated to include the package_type option
    (which is required). (#2546)

Changes:

  • The github_release task now has a package_type option which
    is included in the information written to GitHub release tags.
    The following standard library "release" flows have been updated
    with hardcoded values (either 1GP or 2GP) for this option:

        - `release_beta` (1GP)
        - `release_production` (1GP)
        - `release_2gp_beta` (2GP)
        - `release_2gp_production` (2GP)
    

(#2546)

  • The update_dependencies task now supports a packages_only
    option, which suppresses the installation of unpackaged metadata
    dependencies. This option is intended to support building
    update-only or idempotent installers. (#2587)

  • The github_automerge_main task has a new option,
    skip_future_releases, which can be set to False to disable the
    default behavior of skipping branches that are numeric (and thus
    considered release branches) but not the lowest number. (#2582)

  • Added an new option set_recently_viewed to the load_dataset task
    that sets newly inserted data as recently viewed. This changes the
    default behavior. By default (if you do not specify the option), the
    first 1000 records inserted via the Bulk API will be set as recently
    viewed. If fewer than 1000 records are inserted, existing objects of
    the same type being inserted will also be set as recently viewed.
    (#2578)

  • The update_dependencies task can now consume 2GP releases in
    upstream repositories, provided they're stored in release tags as
    generated by CumulusCI. (#2557)

  • The extract_dataset and load_datast tasks now support adding or
    removing a namespace from a mapping file to match the target org for
    sObjects and not just fields. (#2532)

  • The create_package_version task can now increment package version
    numbers when the package is not in a released state. (#2547)

  • Includes Snowfakery 1.10 with upgrades to its Fake data functions.

Issues Closed

  • Fixed an error in the github_automerge_main task when using a
    branch prefix that doesn't contain a slash. (#2582)
  • Fixed logic in the push_sandbox and push_all tasks which was
    selecting the wrong package versions. (#2577)
  • Improved logging of errors from sfdx while converting sfdx format
    metadata to deploy via the Metadata API, so that they are not lost
    when CumulusCI is embedded in another system like MetaCI or Metecho.
    (#2574)

3.33.1

20 Apr 18:15
03402c1
Compare
Choose a tag to compare

Changes:

  • The create_package_version task now accepts an --ancestor-id option to specify the 04t Id of the package version that should be considered the ancestor of a new managed package version. The option can also be set to latest_github_release to look up the 04t Id of the project's most recent release on GitHub. (#2540)

Issues closed:

  • Fixed a regression where the release_beta flow would throw an error if the project has unmanaged github dependencies. (#2566)

  • Fixed a regression where the cci service connect command could no longer connect a service without giving it a name. Now a default name will be assigned. (#2568)

  • Fixed a regression when resolving unpackaged dependencies from GitHub releases. (#2571)

  • Fixed a regression with creating a scratch org if the devhub service was configured but not set as the default. (#2570)

  • Improved the formatting of cumulusci.yml validation warnings. (#2567)

3.33.0

19 Apr 19:55
18faa74
Compare
Choose a tag to compare

Critical Changes:

  • CumulusCI's dependency management modules have been rewritten. This grants new capabilities and removes some existing features. (#2456)
    • All package installations now perform retries if the package is not yet available.

    • Package installations are also retried on common row locking errors.

    • You can now obtain fine-grained control over how your projects resolve dependencies. It's much easier to control where your application uses beta managed packages and second-generation packages to satisfy dependencies.

    • You can now execute 2GP builds that use 2GPs from upstream feature branches matching your current branch, not just release branches.

    • The update_dependencies task no longer supports uninstalling managed packages in a persistent org as part of the dependency installation process.

    • The update_dependencies task no longer supports the allow_newer option, which is always True.

    • The install order of update_dependencies changes slightly where multiple levels of upstream dependency have unpackaged/pre metadata. Where previously one package's unpackaged/pre might be installed prior to its own upstream dependency, unpackaged/pre will now always be installed immediately prior to the repo's package.

    • Projects using unmanaged dependencies that reference GitHub subfolders will see a change in resolution behavior. Previously, a dependency specified like this:

      dependencies:
          - github: https://github.com/SalesforceFoundation/NPSP
            subfolder: unpackaged/config/trial
      

      would always deploy from the latest commit on the default branch. Now, this dependency will be resolved to a GitHub commit just like a dependency without a subfolder, selecting the latest beta or production release as determined by the chosen resolution strategy.

    • The project__dependencies section in cumulusci.yml no longer supports nested dependencies specified like this:

      dependencies:
          - namespace: "test"
            version: "1.0"
            dependencies:
              - namespace: "parent"
                version: "2.2"
      

      All dependencies should be listed in install order.

Changes:

  • CumulusCI now supports named services! This means you can configure multiple services of the same type under different names. If you run cci service list you will note that your existing global services will have the name global, and any project-specific services will have the name project_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.yml and shows warnings about values that are not expected. (#1624)
  • Added a friendly error message when a GitHub repository cannot be found when set as a dependency or cross-project source. (#2535)
  • Task option command line arguments can now be specified with either an underscore or a dash: e.g. clean_meta_xml can be specified as either --clean_meta_xml or --clean-meta-xml or -o clean-meta-xml (#2504)
  • Adjustments to existing tasks:
    • The update_package_xml task now supports additional metadata types. (#2549)
    • The push_sandbox and push_all tasks now use the Bulk API to query for subscriber orgs. (#2338)
    • The push_sandbox and push_all tasks now default to including all orgs whose status is not Inactive, rather than only orgs with a status of Active. This means that sandboxes, scratch orgs, and Developer Edition orgs are included. (#2338)
    • The user_alias option for the assign_permission_sets, assign_permission_set_groups, and assign_permission_set_licenses tasks now accepts a list of user aliases, and can now create permission assignments for multiple users with a single task invocation. (#2483)
    • The command task now sets the return_values to a dictionary that contains the return code of the command that was run. (#2453)
  • Data generation with Snowfakery:
  • Robot Framework:
    • The run task keyword 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 robot task. (#2536)
  • Changes for CumulusCI developers:
    • Tasks now get access to the --debug-mode option and can output debugging information conditional on it. (#2481)
    • cci org connect can now connect to orgs running in an internal build environment with a different port. (#2501, with thanks to @force2b)

Issues Closed:

  • The load_custom_settings task now resolves a relative settings_path correctly when used in a cross-project flow. (#2523)
  • Fixed the min_version option for the push_sandbox and push_all tasks to include the min_version and not only versions greater than it. (#2338)

3.32.1

01 Apr 20:41
e02f9ef
Compare
Choose a tag to compare

April Fool's! This is the real new release, because there was a packaging problem with 3.32.0.

3.32.0

01 Apr 18:26
44cdc40
Compare
Choose a tag to compare

Changes:

  • A new task, create_network_member_groups, creates
    NetworkMemberGroup records to grant specified Profiles or
    Permissions Sets access to an Experience Cloud site (community).
    (#2460, thanks @ClayTomerlin)
  • A new preflight check task, get_existing_sites, returns a list of
    existing Experience Cloud site names in the org. (#2493)
  • It is now possible to create a flow which runs the same sub-flow
    multiple times, as long as they don't create a self-referential
    cycle. (#2494)
  • Improvements to support for releasing 2nd-generation (2GP) packages:
    • The github_release task now includes the package version's 04t
      id in the message of the tag that is created. (#2485)
    • The promote_package_version task now defaults to promoting the
      package version corresponding to the most recent beta tag in the
      repository, if version_id is not specified explicitly.
      (#2485)
    • Added a new flow, release_2gp_beta, which creates a beta
      package version of a 2GP managed package and a corresponding tag
      and release in GitHub. (#2509)
    • Added a new flow, release_2gp_production, which promotes a 2gp
      managed package version to released status and creates a
      corresponding tag and release in GitHub. (#2510)
  • 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, and action parameters in
      mapping files are now case insensitive.
  • Robot Framework:
    • Added a new keyword, Input Form Data, for populating form
      fields of many different types. This keyword is considered
      experimental but is intended to eventually replace
      Populate Form. (#2496)
    • Added a new keyword, Locate Element by Label, for finding form
      inputs using their label. (#2496)
    • Added a custom locator strategy called label which uses
      Locate Element By Label (e.g. label:First Name). (#2496)
    • Added two new options to the robot task: ordering and
      testlevelsplit. These only have an effect when combined with
      the processes option to run tests in parallel.

Issues Closed:

  • The cci org import command now shows a clearer error message if
    you try to import an org that is not a locally created scratch org.
    (#2482)

3.31.0

18 Mar 20:25
098b740
Compare
Choose a tag to compare

Changes:

  • It is now possible to pass the --noancestors flag to sfdx when creating a scratch org by setting noancestors: True in the scratch org config in cumulusci.yml. Thanks @lionelarmanet (#2452)
  • The robot_outputdir return value from the robot task 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 a Package2Version to 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 init no longer overwrites existing files. If files already exist, it displays a warning and outputs the rendered file template. #1325

3.30.0

04 Mar 20:13
d90a9e4
Compare
Choose a tag to compare

Critical changes:

  • We are planning to remove functionality in CumulusCI's dependency management in a future release.

    • The update_dependencies task will no longer support uninstalling managed packages in a persistent org as part of the dependency installation process.

    • The allow_newer option on update_dependencies will be removed and always be True.

    • The project__dependencies section in cumulusci.yml will no longer support nested dependencies specified like this ::

      dependencies:
      - namespace: "test"
      version: "1.0"
      dependencies:
      - namespace: "parent"
      version: "2.2"

    All dependencies should be listed in install order.

    We recommend reformatting nested dependencies and discontinuing use of allow_newer and package uninstalls now to prepare for these future changes.

Changes:

  • We released a new suite of documentation for CumulusCI.
  • CumulusCI now caches org describe data in a local database to provide significant performance gains, especially in generate_dataset_mapping.
  • The cci org browser command now has a --path option to open a specific page and a --url-only option to output the login URL without spawning a browser.
  • We improved messaging about errors while loading cumulusci.yml.
  • CumulusCI now uses Snowfakery 1.6 (see its release notes).

3.29.0

18 Feb 15:50
98b393d
Compare
Choose a tag to compare

Changes:

  • The message shown at the end of running a flow now includes the org name. #2390, thanks @Julian88Tex

  • Added new preflight check tasks:

    • get_existing_record_types checks for existing Record Types. #2371, thanks @ClayTomerlin
    • get_assigned_permission_sets checks the current user's Permission Set Assignments. #2386
  • The generate_package_xml task now supports the Muting Permission Set metadata type. #2382

  • The uninstall_packaged_incremental and uninstall_packaged tasks now support a dry_run option, which outputs the destructiveChanges package manifest to the log instead of executing it. #2393

  • Robot Framework:

    • The Run Task keyword now uses the correct project config when running a task from a different source project. #2391
    • The 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 connect on Safari. #2373

  • Added a workaround for decode errors that sometimes happen while processing cci logs on Windows. #2392

  • If there's an error while doing JWT authentication to an org, we now log the full response from the server. #2384

  • Robot Framework: Improved stability of the ObjectManagerPageObject. #2391