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