|
| 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