-
Notifications
You must be signed in to change notification settings - Fork 90
Android Hotfix Release Workflow
This is the complete flow for create a new Android hotfix release.
These are steps that must be done manually and are described in details in the release page.
- Create release branch
- Merge needed PRs to release branch
- Create a new release in GitHub
In Beagle GitHub Actions we have a workflow called release
. This workflow will be triggered every time a push
event occurs to any tag in the repository.
You can see it more detailed in the workflow file.
Setup needed environment variables. These variables are used in fastlane lanes and actions.
Runs fastlane deploy
lane.
The deploy lane is where we compile and deploy the version. We know that we are deploying an Android hotfix version by the tag name pattern: *.*.*-android
.
This lane will end creating a new GitHub release that will overlap the one created at the beginning of this flow.
You can see it more detailed in the Fastfile.
Update repository references. This is needed because a new branch will be created from the hotfix tag.
Creates a new branch from the hotfix tag. It's named newReleaseFromTag*.*.*-android
.
This branch is created only at the virtual machine executing the workflow. This is the branch that will be used to compile the project modules.
A PGP signature is required to publish artifacts to the maven central repository. You can read more about this here.
The PGP signature is generated by the maven publish plugin.
The maven publish plugin needs three properties to generate the signature:
signing.keyId=12345678
signing.password=some_password
signing.secretKeyRingFile=/Users/yourusername/.gnupg/secring.gpg
The recommended place to setup these properties is at gradle.properties
file at gradle home directory: ~/.gradle/gradle.properties
In this step, we setup these gradle properties. To accomplish this, we call the maven_signing.sh bash script.
The script uses three environment variables declared at the workflow:
- GPG_KEY_CONTENTS
- ORG_GRADLE_PROJECT_SIGNINGKEYID
- ORG_GRADLE_PROJECT_SIGNINGPASSWORD
The values of this variables are stored in our GitHub secrets.
The script does the following tasks:
- Create
~/.gradle
directory - Write the GPG_KEY_CONTENTS encoded in base64 to the
~/.gradle/release.gpg
file - Write the gradle properties to
~/.gradle/gradle.properties
file
signing.keyId=ORG_GRADLE_PROJECT_SIGNINGKEYID
signing.password=ORG_GRADLE_PROJECT_SIGNINGPASSWORD
signing.secretKeyRingFile=~/.gradle/release.gpg
Compiles all android modules and generate the artifacts.
Uploads all modules that have maven publish
gradle plugin to nexus. This action is accomplished using the uploadArchives
gradle task. This task is defined by the maven publish plugin.
Executes release_notes
fastlane lane.
This lane uses fastlane-plugin-semantic_release plugin to generate release notes based on the commits made to the release branch.
This step is necessary because we don't have permission to edit a github release.
A first github release is manually created along with the hotfix tag (this is the start of a hotfix release process).
Creates github release notes for generated version, from release notes generated in step 11.