- Check the
RELEASE-ORDER.md
file. - If there are multiple modules affected by this version, release should be created from top to bottom (the ones with less dependencies are released first, so after their release, the dependent ones can be released). So, with the new release of the
capture-sdk
,bank-sdk
should be released as well. capture-sdk:default-network
version is always bumped when thecapture-sdk
is updated.core-api-library
andcapture-sdk:default-network
don't get their own release notes, but they still need to be released separately. Forcore-api-library
, we share release notes throughbank-api-library
andhealht-api-library
. Forcapture-sdk:default-network
we share the release notes throughcapture-sdk
.internal-payment-sdk
also doesn't get it's own release notes, but a release is needed in order to Health and Merchant SDKs can function. It's main purpose is to gather common classes for the mentioned libraries without exposing them, but some parts of it should be accesible from libraries which are using it.
To publish releases follow these steps:
- For Capture SDK, Bank SDK and Bank API Library create releases in Jira in Photopayment's project and for Health SDK and Health API Library in the Insurance's project.
- Connect tickets to each release: for each to-be-released ticket add the release to its "Fix versions" field.
- Add release notes in markdown format to each release's description (you can copy and update the release notes of a previous release).
Markdown formatting is needed because these release notes will be published on GitHub's releases page.
- Read this wiki page to determine which branch to use because we support three main version (1.x.x, 2.x.x and 3.x.x).
- Check out or create the required branch and bump the version numbers:
- Bump the version in each to-be-released module's:
gradle.properties
file,- documentation file.
- Update the
RELEASE-ORDER.md
file by running:./gradlew updateReleaseOrderFile
. - Check
RELEASE-ORDER.md
to find out which projects contain the to-be-released modules in their release order.
These will be the dependent modules. - Commit the version bump changes using this commit message template:
feat(<project>): Bump version to <version number>
.
Example:feat(bank-sdk): Bump version to 4.3.1
. - For each dependent module:
- Bump the version in each module's:
gradle.properties
file,- documentation file.
- Update the
RELEASE-ORDER.md
file by running:./gradlew updateReleaseOrderFile
. - Commit the version bump changes using the commit message template from above.
- Bump the version in each module's:
- Push the commits to the required branch.
- Bump the version in each to-be-released module's:
- Wait for QA to assign back the release candidate tickets to you.
- Create and push release tags by running:
bundle exec fastlane create_release_tags
. - Check that the release workflows have started in GitHub Actions.
- After all builds have finished log into Sonatype's Nexus Repository Manager
(for Maven Central) and view the
Staging Repositories
. Credentials are in 1Password: "Maven Central Sonatype account for net.gini".- Run pre-release checks: select all staging repositories and click
Close
. - After the checks have completed check your emails to see whether Sonatype Lift detected any vulnerabilities.
- Finalize release: after the automated checks are done select all staging repositories and click
Release
.
- Run pre-release checks: select all staging repositories and click
- Create and publish releases in GitHub for each of the created release tags using the release notes from the Jira release.