diff --git a/doc/release-overview.md b/doc/release-overview.md new file mode 100644 index 000000000..e2e9f41cd --- /dev/null +++ b/doc/release-overview.md @@ -0,0 +1,79 @@ +# Overview of release process and infrastructure for Node.js + +This is an overview of how the release process for Node.js works and how it interacts with Build WG infrastructure. +Clicking on most labels will take you to the relevant area of the build repository or other repository owned by the Node.js organization. + +```mermaid +flowchart TD + subgraph user[Releaser] + start([Start]) + prepareRelease(Prepare the release) + startTestBuilds(Start test builds) + readyToRelease{Ready for release?} + + startReleaseBuilds(Start release build) + promote(Promote) + blog(Create blog post) + done([End]) + + start-->prepareRelease-->startTestBuilds-->readyToRelease + readyToRelease--No-->prepareRelease + readyToRelease--Yes-->startReleaseBuilds-->promote-->blog-->done + end + subgraph github[GitHub] + ghCode[nodejs/node] + ghWebsite[nodejs/nodejs.org] + + %% This invisible link is to aid the layout of the flowchart, stacking the two repositories vertically + ghCode ~~~ ghWebsite + end + subgraph buildInfra[Infrastructure owned by Build WG] + subgraph ci[Test CI] + testBuilds(Test builds) + end + subgraph ci-release[Release CI] + releaseBuilds(Release builds) + end + subgraph www[www server] + staging[(staging)] + promotion(Promotion) + dist[(dist)] + rebuildIdx(Rebuild index) + rebuildWebsite(Rebuild website) + queueCDN[Queue CDN purge] + webhook(Webhook) + + staging-->promotion-->dist-->rebuildIdx + + subgraph chkIndex[Check index] + idxChanged{Index Changed?} + + idxChanged--No-->idxChanged + end + + rebuildIdx-.->idxChanged + webhook-->rebuildWebsite + idxChanged--Yes-->rebuildWebsite + rebuildWebsite-->queueCDN-.->purgeQueued + + subgraph cdn[CDN purge queue] + purgeQueued{CDN purge queued?} + purge(CDN purge) + + purgeQueued--No-->purgeQueued + purgeQueued--Yes-->purge + end + end + end + prepareRelease-->|Open/update pull request|ghCode + startTestBuilds-->testBuilds + startReleaseBuilds-->releaseBuilds + ghWebsite-.->|Pull request merged|webhook + promote-->promotion + blog-->|Open pull request|ghWebsite + releaseBuilds-->staging + purge-->cloudflare + + %% This invisible link is to aid the layout of the flowchart, stacking the "Test CI" subgraph above the "Release CI" subgraph + ci ~~~ ci-release +```