Skip to content

Nightly Build

Nightly Build #37

Workflow file for this run

name: Nightly Build
# Runs on a schedule (4 AM UTC) like the old nightly-branch-sync.
# Each build creates its own ephemeral branch via create-build-branch.yml,
# so the persistent chore/temp-nightly branch is no longer needed.
#
# iOS builds use build-and-upload-to-testflight.yml (temp branch, build.yml, TestFlight upload).
# Android builds use create-build-branch.yml + build.yml (build artifacts only).
#
# rc depends on exp within each platform stream to ensure the external version
# service produces sequential numbers (N for exp, N+1 for rc).
# iOS and Android streams run in parallel; their version numbers will differ
# but remain unique, which is all TestFlight / Play Store require.
on:
schedule:
# NOTE: Scheduled workflows ALWAYS run from the default branch (main)
- cron: '0 4 * * *'
workflow_dispatch:
permissions:
contents: write
id-token: write
jobs:
# ── iOS exp: build + TestFlight upload ─────────────────────────────────
ios-exp:
name: Nightly iOS exp
uses: ./.github/workflows/build-and-upload-to-testflight.yml
with:
source_branch: main
environment: exp
testflight_group: 'MetaMask BETA & Release Candidates'
secrets: inherit
# ── iOS rc: build + TestFlight upload (after exp for sequential versions) ─
ios-rc:
name: Nightly iOS rc
needs: [ios-exp]
uses: ./.github/workflows/build-and-upload-to-testflight.yml
with:
source_branch: main
environment: rc
testflight_group: 'MetaMask BETA & Release Candidates'
secrets: inherit
# ── Android exp: ephemeral branch + build ──────────────────────────────
android-exp-branch:
uses: ./.github/workflows/create-build-branch.yml
with:
source_branch: main
secrets: inherit
android-exp:
name: Nightly Android exp
needs: [android-exp-branch]
uses: ./.github/workflows/build.yml
with:
build_name: main-exp
platform: android
skip_version_bump: false
source_branch: ${{ needs.android-exp-branch.outputs.build_branch }}
secrets: inherit
# ── Android rc: ephemeral branch + build (after exp for sequential versions) ─
android-rc-branch:
needs: [android-exp]
uses: ./.github/workflows/create-build-branch.yml
with:
source_branch: main
secrets: inherit
android-rc:
name: Nightly Android rc
needs: [android-rc-branch]
uses: ./.github/workflows/build.yml
with:
build_name: main-rc
platform: android
skip_version_bump: false
source_branch: ${{ needs.android-rc-branch.outputs.build_branch }}
secrets: inherit
# ── Cleanup Android ephemeral branches ─────────────────────────────────
# iOS ephemeral branches are cleaned up by build-and-upload-to-testflight.yml.
cleanup:
name: Cleanup Android build branches
needs: [android-exp-branch, android-rc-branch, android-exp, android-rc]
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.PR_TOKEN || github.token }}
- name: Delete ephemeral branches
env:
EXP_BRANCH: ${{ needs.android-exp-branch.outputs.build_branch }}
RC_BRANCH: ${{ needs.android-rc-branch.outputs.build_branch }}
run: |
for branch in "$EXP_BRANCH" "$RC_BRANCH"; do
if [ -n "$branch" ]; then
git push origin --delete "$branch" || true
echo "🧹 Deleted: $branch"
fi
done