-
-
Notifications
You must be signed in to change notification settings - Fork 26
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?
Conversation
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.
Looks great. Thanks a lot Gauthier
end | ||
|
||
subgraph Previous [Previous release branch: 'release/x.y-1.z'] | ||
style Previous fill:#08084d,stroke:#000,stroke-width:2px,color:#fff |
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.
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 comment
The 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 comment
The 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?
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.
Looks good, although it appears that the top right side square where it says "Previous Release Branch:" and "Hotfix Release Branch:" was cut off.
HOTFIX1 -->|every time a release is merged into 'stable'| CURRENT4 | ||
CURRENT4 --> CURRENT5[Changelog is added] | ||
CURRENT5 --> CURRENT6[Release is tested by all teams] | ||
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 comment
The 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 comment
The 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 comment
The 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:
- Release branch is created for release x.y.z
- We test the release and find a bug
- Bug is fixed on
main
branch - Then we cherry-pick the fix on the release branch
- Then we update the changelog accordingly on the release branch
So cherry-picks happen for any kind of releases, not only hotfixes.
style Current fill:#08084d,stroke:#000,stroke-width:2px,color:#fff | ||
MAIN1 -->|every 2 weeks| CURRENT1[Runway automatically creates a new release branch based off of 'main' branch, called 'release/x.y.z'] | ||
CURRENT1 --> CURRENT2[GitHub Action creates x.y.z release PR] | ||
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] |
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.
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
. How is this release build automatically created? Is there a separate GH actions workflow for this?
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.
The release build is automatically created by the publish-prerelease.yml GitHub Action
MAIN1 -->|every 2 weeks| CURRENT1[Runway automatically creates a new release branch based off of 'main' branch, called 'release/x.y.z'] | ||
CURRENT1 --> CURRENT2[GitHub Action creates x.y.z release PR] | ||
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] | ||
CURRENT3 --> CURRENT4[Release Engineer creates and merges stable sync PR into 'release/x.y.z branch'] |
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.
What is the "stable sync PR"? What branch is being merged in the "release/x.y.z" branch here?
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.
Every time code is added to stable
branch, we need to merge stable
into main
and into all branches that have stable
as base branch, like the release/x.y.z
branches. Otherwise, they'd be out of sync with stable
.
Example:
After release 13.2.1
got merged to stable
last week, we've opened 2 stable sync PRs
- Stable sync to main (usually, only updates to the changelog file)
- Stable sync to 13.3.0 release branch
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] | ||
CURRENT3 --> CURRENT4[Release Engineer creates and merges stable sync PR into 'release/x.y.z branch'] | ||
PREVIOUS1 -->|every time a release is merged into 'stable'| CURRENT4 | ||
HOTFIX1 -->|every time a release is merged into 'stable'| CURRENT4 |
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.
Is this merging the release branch into the stable branch?
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.
yes
CURRENT3 --> CURRENT4[Release Engineer creates and merges stable sync PR into 'release/x.y.z branch'] | ||
PREVIOUS1 -->|every time a release is merged into 'stable'| CURRENT4 | ||
HOTFIX1 -->|every time a release is merged into 'stable'| CURRENT4 | ||
CURRENT4 --> CURRENT5[Changelog is added] |
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.
Is this referring to the changelog.md file?
Also, Where is it added? Is it added to release branch or somewhere else?
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.
Yes this is referring to the changelog.md file.
It is added to the release branch.
Example for release 13.3.0: MetaMask/metamask-extension#35523
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 comment
The 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 comment
The 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).
PREVIOUS2 -->|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 comment
The 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 comment
The 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).
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 -->|create PR| PREVIOUS2[Release Engineer creates stable sync PRs] |
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.
Just for context, what is a "stable sync PR"? Which branch is being synced with stable?
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.
More context here
FEAT -->|merge PR| MAIN1 | ||
|
||
%% Subgraphs %% | ||
subgraph Main [Main developement branch: 'main'] |
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.
CURRENT6 --> BUG1[A bug is found] | ||
BUG1 --> BUG2[A fix is done on 'main' branch] | ||
BUG2 --> CURRENT7 | ||
ENG[Engineer] -->|create PR| FEAT[Implement new features] |
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.
I think we mentioned it during the meeting today but is package.json in the main branch used for something in the release process?
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.
The release version indicated in package.json is used by an automation that fills the release spreadsheet every time a PR gets merged.
CLICK HERE to preview the release process diagram