-
-
Notifications
You must be signed in to change notification settings - Fork 30
feat(process): document the release process with a mermaid diagram #146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
a321e72
5443a13
d6319f8
4771f7f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Release process | ||
This diagram below represents the release process for MetaMask Extension and MetaMask Mobile clients. | ||
|
||
```mermaid | ||
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'] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks like this is getting cut off a bit in the diagram. Can we move it a little? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unfortunately I don't think we can easily move choose texts' positions on a mermaid diagram (at least I didn't figure out how to). |
||
style Previous fill:#08084d,stroke:#000,stroke-width:2px,color:#fff | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's a bit hard to see the lines and where they're pointing in the dark blue background. Can we change the color of that background square or lines so that they're more visible? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks a lot better in that screenshot. Maybe I was looking in the wrong place. Did you do anything or navigate somewhere to see it like that? |
||
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'] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks like this is getting cut off a bit in the diagram as well. Can we move it a little? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unfortunately I don't think we can easily move choose texts' positions on a mermaid diagram (at least I didn't figure out how to). |
||
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' GitHun 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] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We mentioned cherry picks today during part of the release process. Does the cherry picking only happen during a hotfix? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we update the changelog again after this as well? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We do cherry picks every time code needs to be added to a release branch after the initial release branch creation. Example:
So cherry-picks happen for any kind of releases, not only hotfixes. |
||
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['Tag Release Branch' GitHub Action is triggered by Release Engineer] | ||
CURRENT10 --> CURRENT11[Release tag is added on the release branch] | ||
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[A new production build is automatically created and posted on the repo's releases page] | ||
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we still generating commits.csv as part of the release process or was that deprecated? If used where does it come into play?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We only need commits.csv to generate the changelog PR in the create-release-pr GitHub Action.