Skip to content

Commit f8fa16a

Browse files
feat(process): document the release process with a mermaid diagram (#146)
[CLICK HERE](https://github.com/MetaMask/contributor-docs/blob/4771f7f309619ba5dfc0c0f4023e58d6d312ae56/docs/release-process.md) to preview the release process diagram <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Add a new release-process doc with a Mermaid diagram detailing branch flow, automation, and approvals across main/release/stable. > > - **Docs**: > - Add `docs/release-process.md` with a Mermaid diagram outlining the release workflow: > - Branch flow: `main`, `release/x.y.z` (current/next), hotfix, previous, `stable`. > - Automation: Runway branch creation; GitHub Actions for release/changelog PRs, stable sync, tagging, builds. > - Human steps: reviews, cherry-picks, testing, approvals, and store submission. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 41f1833. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Elliot Winkler <[email protected]>
1 parent 2cf4a41 commit f8fa16a

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

docs/release-process.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Release process
2+
3+
This diagram below represents the release process for MetaMask Extension and MetaMask Mobile clients.
4+
5+
```mermaid
6+
graph TD
7+
8+
%% Nodes outside subgraphs %%
9+
RUN[Runway] -->|every 2 weeks| CURRENT0
10+
CURRENT1 --> |create PR| bump1[GitHub Action creates version bump PR for the main branch]
11+
bump1 -->|merge PR| MAIN1
12+
CURRENT6 --> BUG1[A bug is found]
13+
BUG1 --> BUG2[A fix is done on 'main' branch]
14+
BUG2 --> CURRENT7
15+
FEAT[For every change, new features or fixes, engineers first open PRs on 'main'] -->|merge PR| MAIN1
16+
17+
%% Subgraphs %%
18+
subgraph Main [Main developement branch: 'main']
19+
style Main fill:#4d0808,stroke:#000,stroke-width:2px,color:#fff
20+
MAIN1[All changes are first made on 'main' branch]
21+
end
22+
23+
subgraph Previous [Previous release branch: 'release/x.y-1.z']
24+
style Previous fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
25+
PREVIOUS1[Previous release is merged into 'stable' branch]
26+
PREVIOUS1 --> PREVIOUS2['Stable Branch Sync' GitHun Action creates stable sync PR]
27+
PREVIOUS2 -->|create PR| PREVIOUS3[Release engineer reviews and merges stable sync PR]
28+
PREVIOUS3 -->|merge PR| MAIN1
29+
end
30+
31+
subgraph HotFix [Hotfix release branch: 'release/x.y-1.z+1']
32+
style HotFix fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
33+
HOTFIX1[Hot fix release is merged into 'stable' branch]
34+
HOTFIX1 --> HOTFIX2['Stable Branch Sync' GitHub Action creates stable sync PR]
35+
HOTFIX2 -->|create PR| HOTFIX3[Release engineer reviews and merges stable sync PR]
36+
HOTFIX3 -->|merge PR| MAIN1
37+
end
38+
39+
subgraph Current [Current release branch: 'release/x.y.z']
40+
style Current fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
41+
CURRENT0[Runway automatically creates a new release branch based off of 'main' branch, called 'release/x.y.z']
42+
CURRENT0 --> CURRENT1['Create Release Pull Request' GitHub Action is automatically executed]
43+
CURRENT1 -->|create PR| changelog1[GitHub Action creates x.y.z changelog PR]
44+
CURRENT1 --> CURRENT2[GitHub Action creates x.y.z release PR]
45+
changelog1 -->|update PR| changelog2[Release Engineer reviews, adjusts, and merges x.y.z changelog PR]
46+
changelog2 -->|merge PR| CURRENT4
47+
CURRENT2 --> CURRENT5
48+
CURRENT3[Release Engineer creates and merges stable sync PR into 'release/x.y.z branch'] -->|merge PR| CURRENT4
49+
CURRENT4[A commit is added to 'release/x.y.z' branch] --> CURRENT5[A new release build is automatically created and posted on the x.y.z release PR]
50+
CURRENT5 --> CURRENT6[Release is tested by all teams]
51+
PREVIOUS1 --> CURRENT3
52+
HOTFIX1 --> CURRENT3
53+
CURRENT7[Release Engineer cherry-picks fixes on 'release/x.y.z' branch]
54+
CURRENT6 --> CURRENT8[Release is approved by all teams]
55+
CURRENT7 --> CURRENT8
56+
CURRENT8 --> CURRENT9[Release is approved by Release Engineer, Release QA, and Release Manager]
57+
CURRENT9 --> CURRENT10['Tag Release Branch' GitHub Action is triggered by Release Engineer]
58+
CURRENT10 --> CURRENT11[Release tag is added on the release branch]
59+
CURRENT11 --> CURRENT12[Release engineer merges x.y.z release PR into 'stable' branch]
60+
end
61+
62+
subgraph Stable [Stable branch: 'stable']
63+
style Stable fill:#26084d,stroke:#000,stroke-width:2px,color:#fff
64+
CURRENT12 -->|merge PR| STABLE1[A new production build is automatically created and posted on the repo's releases page]
65+
STABLE1 --> STABLE2[Release Engineer submits x.y.z production build to the store]
66+
end
67+
68+
subgraph Next [Next release branch: 'release/x.y+1.z']
69+
style Next fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
70+
STABLE2 --> NEXT1[Runway automatically creates a new release branch from main, called 'release/x.y+1.z']
71+
end
72+
```

0 commit comments

Comments
 (0)