docs/release/AUTOMATION.md
Release automation is triggered by the workflow_dispatch event on the "Shippable Build & Signing" workflow. GitHub environments are used to set configuration variables and secrets for each application and release type.
There is a script available for automatic setup, which is helpful if you want to replicate this on your own repository for devlopment. Please see /scripts/ci/setup_release_automation.
You can run it using:
python -m venv venv
source venv/bin/activate
pip install requests pynacl
cd .signing
python ../scripts/ci/setup_release_automation -r yourfork/thunderbird-android
You will need the following files:
{
"homeserver": "matrix-client.matrix.org",
"room": "room id here",
"token": "matrix token here",
"userMap": {
"github_username": "@matrix_id:mozilla.org"
}
}
play-store-account.json with the service account json that will do the uploadsthunderbird-mobile-gh-releaser-bot.clientid.txt as a simple file with the client ID of the releaser bot (you can skip this to use GitHub Actions as the user)thunderbird-mobile-gh-releaser-bot.pem with the private key of the releaser botBuild environments determine the configuration for the respective release channel. The following are available:
The following (non-sensitive) variables have been set:
The following MATRIX_INCLUDES would build an apk and aab for Thunderbird, and an apk for K-9 Mail.
[
{ "appName": "thunderbird", "packageFormat": "apk", "packageFlavor": "foss" },
{
"appName": "thunderbird",
"packageFormat": "bundle",
"packageFlavor": "full"
},
{ "appName": "k9mail", "packageFormat": "apk", "packageFlavor": "foss" }
]
The environments are locked to the respective branch they belong to.
These environments contain the secrets for signing. Their names follow this pattern:
<appName>_<releaseType>_<packageFlavor>
thunderbird_beta_full
thunderbird_beta_foss
k9mail_beta_foss
The following secrets are needed:
The environments are locked to the respective branch they belong to.
The "publish_hold" is shared by all application variants and is used by the "pre_publish" job. It has no secrets or variables, but "Required Reviewers" is set to trusted team members who oversee releases. The effect is that after package signing completes, the publishing jobs that depend on it will not run until released manually.
This environment will create the github release. It uses actions/create-github-app-token to upload the release with limited permissions.
The releases environment is locked to the release, beta and main branches.
If you leave out the environment, the Github Actions user will be used.
This environment will notify about build updates. It requires the following keys:
If you leave out this environment, no notifications will be sent.