Skip to content

Latest commit

 

History

History
72 lines (63 loc) · 3.61 KB

File metadata and controls

72 lines (63 loc) · 3.61 KB

Release process

This diagram below represents the release process for MetaMask Extension and MetaMask Mobile clients.

graph TD

%% Nodes outside subgraphs %%
RUN[Runway] -->|every 2 weeks| CURRENT0
CURRENT1 --> |create PR| bump1[GitHub Action creates version bump PR for the main branch]
bump1 -->|merge PR| MAIN1
CURRENT6 --> BUG1[A bug is found]
BUG1 --> BUG2[A fix is done on 'main' branch]
BUG2 --> CURRENT7
FEAT[For every change, new features or fixes, engineers first open PRs on 'main'] -->|merge PR| MAIN1

%% Subgraphs %%
subgraph Main [Main developement branch: 'main']
    style Main fill:#4d0808,stroke:#000,stroke-width:2px,color:#fff
    MAIN1[All changes are first made on 'main' branch]
end

subgraph Previous [Previous release branch: 'release/x.y-1.z']
    style Previous fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
    PREVIOUS1[Previous release is merged into 'stable' branch]
    PREVIOUS1 --> PREVIOUS2['Stable Branch Sync' GitHun Action creates stable sync PR]
    PREVIOUS2 -->|create PR| PREVIOUS3[Release engineer reviews and merges stable sync PR]
    PREVIOUS3 -->|merge PR| MAIN1
end

subgraph HotFix [Hotfix release branch: 'release/x.y-1.z+1']
    style HotFix fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
    HOTFIX1[Hot fix release is merged into 'stable' branch]
    HOTFIX1 --> HOTFIX2['Stable Branch Sync' GitHub Action creates stable sync PR]
    HOTFIX2 -->|create PR| HOTFIX3[Release engineer reviews and merges stable sync PR]
    HOTFIX3 -->|merge PR| MAIN1
end

subgraph Current [Current release branch: 'release/x.y.z']
    style Current fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
    CURRENT0[Runway automatically creates a new release branch based off of 'main' branch, called 'release/x.y.z']
    CURRENT0 --> CURRENT1['Create Release Pull Request' GitHub Action is automatically executed]
    CURRENT1 -->|create PR| changelog1[GitHub Action creates x.y.z changelog PR]
    CURRENT1 --> CURRENT2[GitHub Action creates x.y.z release PR]
    changelog1 -->|update PR| changelog2[Release Engineer reviews, adjusts, and merges x.y.z changelog PR]
    changelog2 -->|merge PR| CURRENT4
    CURRENT2 --> CURRENT5
    CURRENT3[Release Engineer creates and merges stable sync PR into 'release/x.y.z branch'] -->|merge PR| CURRENT4
    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]
    CURRENT5 --> CURRENT6[Release is tested by all teams]
    PREVIOUS1 --> CURRENT3
    HOTFIX1 --> CURRENT3
    CURRENT7[Release Engineer cherry-picks fixes on 'release/x.y.z' branch]
    CURRENT6 --> CURRENT8[Release is approved by all teams]
    CURRENT7 --> CURRENT8
    CURRENT8 --> CURRENT9[Release is approved by Release Engineer, Release QA, and Release Manager]
    CURRENT9 --> CURRENT10[Release Engineer manually triggers 'publish-release-from-release-head' workflow on the release branch]
    CURRENT10 --> CURRENT11[Production build, tag, and GitHub release are created from release branch HEAD]
    CURRENT11 --> CURRENT12[Release engineer merges x.y.z release PR into 'stable' branch]
end

subgraph Stable [Stable branch: 'stable']
    style Stable fill:#26084d,stroke:#000,stroke-width:2px,color:#fff
    CURRENT12 -->|merge PR| STABLE1[Release branch is merged into 'stable' branch]
    STABLE1 --> STABLE2[Release Engineer submits x.y.z production build to the store]
end

subgraph Next [Next release branch: 'release/x.y+1.z']
    style Next fill:#08084d,stroke:#000,stroke-width:2px,color:#fff
    STABLE2 --> NEXT1[Runway automatically creates a new release branch from main, called 'release/x.y+1.z']
end
Loading