Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/app-release-start.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: App Release Start

on:
schedule:
# Auto release: every Monday at ~6PM CET (17:07 UTC). Off the top of the
# hour because GitHub delays or drops schedules queued at :00.
- cron: '7 17 * * 1'
workflow_dispatch:
inputs:
base_commit:
Expand All @@ -13,7 +17,39 @@ permissions:
pull-requests: write

jobs:
# Gates scheduled runs only (manual dispatch bypasses it): green-skips when
# there is nothing to release or a release is already in flight.
schedule-gate:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
outputs:
proceed: ${{ steps.gate.outputs.proceed }}
steps:
- name: Checkout
uses: actions/checkout@v7.0.0
with:
fetch-depth: 1

- name: Gate scheduled run
id: gate
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
skip() { echo "⏭️ Skipping auto release: $1"; echo "proceed=false" >> "$GITHUB_OUTPUT"; exit 0; }

OPEN=$(gh pr list --repo "$GITHUB_REPOSITORY" --base main --state open --json headRefName \
--jq '[.[] | select(.headRefName | startswith("release/app/"))] | length')
[ "${OPEN:-0}" -eq 0 ] || skip "an app release PR is already open."

grep -qs '"@aragon/app"' .changeset/*.md || skip "no pending changesets for @aragon/app."

echo "proceed=true" >> "$GITHUB_OUTPUT"

prepare-release:
needs: schedule-gate
# !cancelled() lets workflow_dispatch runs proceed past the skipped gate.
if: ${{ !cancelled() && (github.event_name != 'schedule' || needs.schedule-gate.outputs.proceed == 'true') }}
runs-on: ubuntu-latest
steps:
- name: Load secrets
Expand Down
6 changes: 4 additions & 2 deletions apps/app/docs/projectDocs/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ repo layout — hotfix/rollback workflows only work with `@aragon/app@*` tags (s
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Start Release │───▶│ Test & Stage │───▶│ Approve & Tag │───▶│ Auto Deploy │───▶│ Merge PR │
│ (manual) │ │ (automatic) │ │ (label+review) │ │ (automatic) │ │ (manual) │
│ (auto/manual) │ │ (automatic) │ │ (label+review) │ │ (automatic) │ │ (manual) │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
```

Expand All @@ -30,7 +30,9 @@ repo layout — hotfix/rollback workflows only work with `@aragon/app@*` tags (s
### 1. Start Release

**Who:** Developer or Manager
**Action:** Manually trigger **App Release Start** workflow in GitHub Actions.
**Action:** Starts automatically every Monday at ~6PM CET (auto release), or trigger **App Release Start** manually in GitHub Actions.

The scheduled run green-skips when there are no pending changesets for `@aragon/app` or a release PR is already open. Manual trigger:

1. Go to [Actions → App Release Start](https://github.com/aragon/app/actions/workflows/app-release-start.yml)
2. Click **Run workflow**
Expand Down
Loading