Commit 6b807dd3 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

docs: add release process schema

parent 4ce0cf35
Loading
Loading
Loading
Loading
Loading
+298 −0
Original line number Diff line number Diff line
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="602px" height="393px" viewBox="-0.5 -0.5 602 393" content="&lt;mxfile&gt;&lt;diagram id=&quot;nscaKp6I1asS_AeMGtGM&quot; name=&quot;Page-1&quot;&gt;7Vpdc+I2FP01zJAHMv7CwOMGsulDt5NpOtNn2RagiW25shygv766kow/ZAMhsGG3i2eIfCzJurpH91wpDNx5sn1iKFt/oxGOB44VbQfuYuA43mQsvgHYKcCfzhSwYiRSkF0BL+RfrEFLowWJcN6oyCmNOcmaYEjTFIe8gSHG6KZZbUnj5lsztMIG8BKi2ET/JhFfK3TqTCr8N0xW6/LNtq/tC1D4umK0SPX7Bo77VX7U4wSVfWlD8zWK6KYGuY8Dd84o5aqUbOc4hqktp021+9rzdD9uhlN+SgPPVy3eUFzgcsh+LNo+RORNFFdQLKElFb3CrMeUycr+PwVVFdyZ/NShZts8QykYzHd6ksuK0OkolxT4Iio4XrZVzXo6CkrgTxxjlGPZqXBIXlYQ1gbtRgJTAzBgZZMBN6x3GgN3ON4CvuZJLABbFFFMVqkox3gJT94w40Sw6YuGExJF0PiBYWEoCmRHlrjPKEm55Or4YTBeQE8Fp2oyZMc5Z/QVz/WEpzSFXpYkjtuQsEIvI9vT9/O9m1xLfva21PmhKQNDxtsapPnyhGmCOduJKuXitu8dvbz16vY0mTfVUnEsja1ry6Ssh/TqXO37rhgqCpqk3YQde72E1ew0GdbPpd4mbVJaPaR8ZhgmcwDL7CClTn2TPel50/CJ8LsjLwlYG6HxSS8dH1lzMTnbnmNd98aFKpSOdMCB/khKOEFxZ5cR5pglJAV3pLBGJa1zQtOzw4Bp+GdMhdmkyCLEwU4RCyDyAf1QkkEAkd8CEXyRsTpJoPCT2R8yrOxXVor4L76H2tt3P525ysqsyNcXNE2AEB6OdNDSPpGwZFDMOQaeZZiRBJadhp6r+4fNmnD8kqEQ6m9EntjUzCXZ4jL1s1uqJiTr0YfLlDJvAZchjeLJ1ILLVGNVsczj3A595jRT/ghJuvpdtlo4XgX9Bc8X3mX00y6lcde6r8un3yGf9vgC+jlx36+fLWKP+8RwH4PSIIc/9s2RyhVpqsjFDVLpHP0UUoXC83IkJq2uklx10WMyvS93WJcnyI0lWJgtKUu+R4KVFUFM8vXVkqxjGxuI0FeZ3N43BwURG2OgbPgqdlDD/JjtvRJ5nXH3Kaj2VE3ycXT3YTt+6eGn6KFnV9HskCQ6VWi8fNAbfz9VdG6OWjeviq5/PGW6qiZOe+lRdMf+w1HeONA6qYclo0mNO8EH9hOSsk1aHtlYnKT91lIxsMLmtGBEEMOx/sAbcxwJIilMPsqBPYdj9nvMa9kWMJSGJ2ydTtn+neqtYKcm+dCRpNl7YQhQ7wa08xTWi+AyR5PjBKUixo/Y/tB0CEeNZwv+x4f0Db1hcOhQqPcojEn4+omDed7xNb2Z0QhfFQgCS8ZoiPP8nJEI0CRTC2wJjjxswxDzrBM05fCJc09aoo+rTZXoy3bauUsjJxnZzrHsRaUqqqKGtH0X2cqP732nIU3OpCN1cb17d9qhTf4ltGlmaBPe4rDg8tjzUh7uSDz3LjrPw/sUglGO5GCFm2YfdYz2gutUM15zhO1355CXyBGm1k3nCDJHrR2W/mCa9w7xxwik3tJ7xFGIMvkPN2E3TrJYnhofzAPM/f2v+PpJ8dVzzPjqzzpX9uyKIXZqG0v7fxxiyz2Z09yTuY57P/GvGXLFbfXDCPms9uMT9/E/&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);">
    <defs/>
    <g>
        <rect x="1.25" y="0" width="200" height="40" fill="none" stroke="none" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 20px; margin-left: 3px;">
                        <div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;">
                            <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">
                                <div>
                                    <font color="#999999">
                                        <span style="font-size: 24px;">
                                            <b>
                                                Release stages
                                            </b>
                                        </span>
                                    </font>
                                </div>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="3" y="24" fill="#000000" font-family="Helvetica" font-size="14px">
                    Release stages
                </text>
            </switch>
        </g>
        <path d="M 60 60 L 300 60 L 320 135 L 300 210 L 60 210 L 80 135 Z" fill="#e6e6e6" stroke="#808080" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 234px; height: 1px; padding-top: 71px; margin-left: 86px;">
                        <div data-drawio-colors="color: #4D4D4D; " style="box-sizing: border-box; font-size: 0px; text-align: left;">
                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(77, 77, 77); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <font style="">
                                    <font style="font-size: 20px;">
                                        Prepare
                                    </font>
                                    <font style="font-size: 17px;">
                                        (Git)
                                    </font>
                                    <br/>
                                    <ol style="font-size: 15px;">
                                        <li>
                                            <font style="font-size: 15px;">
                                                <span style="background-color: initial;">
                                                    determine next version
                                                </span>
                                            </font>
                                        </li>
                                        <li>
                                            <font style="font-size: 15px;">
                                                <span style="">
                                                    update files &amp; Git commit
                                                </span>
                                            </font>
                                        </li>
                                        <li>
                                            <font style="font-size: 15px;">
                                                <span style="">
                                                    create Git tag (version)
                                                </span>
                                            </font>
                                        </li>
                                        <li>
                                            <font style="font-size: 15px;">
                                                <span style="">
                                                    Git push
                                                </span>
                                            </font>
                                        </li>
                                    </ol>
                                </font>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="86" y="83" fill="#4D4D4D" font-family="Helvetica" font-size="12px">
                    Prepare (Git)...
                </text>
            </switch>
        </g>
        <path d="M 1.25 60 L 60 60 L 80 135 L 60 210 L 1.25 210 L 21.25 135 Z" fill="#3399ff" stroke="#808080" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 77px; height: 1px; padding-top: 135px; margin-left: 2px;">
                        <div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <font style="font-size: 50px;">
                                    1
                                </font>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="41" y="139" fill="#FFFFFF" font-family="Helvetica" font-size="12px" text-anchor="middle">
                    1
                </text>
            </switch>
        </g>
        <path d="M 378.75 60 L 580 60 L 600 135 L 580 210 L 378.75 210 L 398.75 135 Z" fill="#e6e6e6" stroke="#808080" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 195px; height: 1px; padding-top: 71px; margin-left: 405px;">
                        <div data-drawio-colors="color: #4D4D4D; " style="box-sizing: border-box; font-size: 0px; text-align: left;">
                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(77, 77, 77); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <font style="">
                                    <font style="font-size: 20px;">
                                        Perform
                                    </font>
                                    <font style="font-size: 17px;">
                                        (publish)
                                    </font>
                                    <br/>
                                    <ol style="font-size: 14px;">
                                        <li style="">
                                            <font style="font-size: 14px;">
                                                build package(s)
                                            </font>
                                        </li>
                                        <li style="">
                                            <font style="font-size: 15px;">
                                                publish (versioned) package(s)
                                            </font>
                                        </li>
                                    </ol>
                                </font>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="405" y="83" fill="#4D4D4D" font-family="Helvetica" font-size="12px">
                    Perform (publish)...
                </text>
            </switch>
        </g>
        <path d="M 320 60 L 378.75 60 L 398.75 135 L 378.75 210 L 320 210 L 340 135 Z" fill="#3399ff" stroke="#808080" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 77px; height: 1px; padding-top: 135px; margin-left: 321px;">
                        <div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
                            <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <font style="font-size: 50px;">
                                    2
                                </font>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="359" y="139" fill="#FFFFFF" font-family="Helvetica" font-size="12px" text-anchor="middle">
                    2
                </text>
            </switch>
        </g>
        <rect x="65.62" y="230" width="234.38" height="160" fill="#e6e6e6" stroke="none" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 223px; margin-left: 54px;">
                        <div data-drawio-colors="color: #4D4D4D; " style="box-sizing: border-box; font-size: 0px; text-align: left;">
                            <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(77, 77, 77); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <ul style="">
                                    <li>
                                        <b style="">
                                            from
                                        </b>
                                        <span style="">
                                            :
                                        </span>
                                        <font face="Courier New" style="">
                                            main/master
                                        </font>
                                        <span style="">
                                            branch
                                        </span>
                                    </li>
                                    <li>
                                        <b style="">
                                            by:
                                        </b>
                                    </li>
                                    <ul>
                                        <li>
                                            <font color="#4d4d4d">
                                                semantic-release (auto)
                                            </font>
                                        </li>
                                        <li>
                                            <font color="#4d4d4d">
                                                Maven (one-click)
                                            </font>
                                        </li>
                                        <li>
                                            <font color="#4d4d4d">
                                                Python (one-click)
                                            </font>
                                        </li>
                                        <li>
                                            <font color="#4d4d4d">
                                                manual process
                                            </font>
                                        </li>
                                    </ul>
                                </ul>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="54" y="237" fill="#4D4D4D" font-family="Helvetica" font-size="14px">
                    from: main/master branchby:...
                </text>
            </switch>
        </g>
        <rect x="-40" y="284.38" width="161.25" height="50" fill="#808080" stroke="none" transform="rotate(-90,40.63,309.38)" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)rotate(-90 40.625 309.3800000000001)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 159px; height: 1px; padding-top: 309px; margin-left: -39px;">
                        <div data-drawio-colors="color: #E6E6E6; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
                            <div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(230, 230, 230); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                execution
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="41" y="314" fill="#E6E6E6" font-family="Helvetica" font-size="16px" text-anchor="middle">
                    execution
                </text>
            </switch>
        </g>
        <rect x="385.62" y="229.38" width="194.38" height="160" fill="#e6e6e6" stroke="none" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 208px; height: 1px; padding-top: 222px; margin-left: 374px;">
                        <div data-drawio-colors="color: #4D4D4D; " style="box-sizing: border-box; font-size: 0px; text-align: left;">
                            <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(77, 77, 77); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                <ul style="">
                                    <li>
                                        <b style="">
                                            from
                                        </b>
                                        : Git tag
                                    </li>
                                    <li>
                                        <b style="">
                                            by:
                                        </b>
                                    </li>
                                    <ul>
                                        <li>
                                            <span style="">
                                                each publish-capable template
                                            </span>
                                            <br/>
                                        </li>
                                    </ul>
                                </ul>
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="374" y="236" fill="#4D4D4D" font-family="Helvetica" font-size="14px">
                    from: Git tagby:...
                </text>
            </switch>
        </g>
        <rect x="280" y="283.76" width="161.25" height="50" fill="#808080" stroke="none" transform="rotate(-90,360.63,308.76)" pointer-events="all"/>
        <g transform="translate(-0.5 -0.5)rotate(-90 360.625 308.76)">
            <switch>
                <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
                    <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 159px; height: 1px; padding-top: 309px; margin-left: 281px;">
                        <div data-drawio-colors="color: #E6E6E6; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
                            <div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(230, 230, 230); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
                                execution
                            </div>
                        </div>
                    </div>
                </foreignObject>
                <text x="361" y="314" fill="#E6E6E6" font-family="Helvetica" font-size="16px" text-anchor="middle">
                    execution
                </text>
            </switch>
        </g>
    </g>
    <switch>
        <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
        <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank">
            <text text-anchor="middle" font-size="10px" x="50%" y="100%">
                Text is not SVG - cannot display
            </text>
        </a>
    </switch>
</svg>
 No newline at end of file
+7 −3
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ But a **publish** is not necessarily related to a **release**. Depending on the

### Release

Functionally, a **release** involves the following steps:
Functionally, a **release** involves the following:

1. `[mandatory]` determine the next release **version** (either manually or automatically),
2. `[optional]` **bump version**
@@ -141,11 +141,15 @@ Functionally, a **release** involves the following steps:
4. `[optional]` create a [GitLab release](https://docs.gitlab.com/ee/user/project/releases/),
5. `[mandatory]` **package** the code (language-dependent format) & **publish** the versioned package(s) to an appropriate repository.

Some _to be continuous_ templates provide their own release job when supported by the build tool (ex: Maven with the [Maven Release Plugin](https://maven.apache.org/maven-release/maven-release-plugin/), Python with [Bumpversion](https://pypi.org/project/bumpversion/) or with the [Poetry Version](https://python-poetry.org/docs/cli/#version) command), but the release action can also be implemented by a separate tool/template such as [semantic-release](https://semantic-release.gitbook.io/semantic-release/) that can gracefully automates the release process (automatically determines the next version number based on Git commit messages, enforces [semantic versioning](https://semver.org/), generates the release notes, creates the tag and the GitLab release).
In _to be continuous_, it is implemented in two separate stages:

![release process implementation](img/release-process.drawio.svg)

Some _to be continuous_ templates provide their own release stage 1 job implementation (_Prepare_) when supported by the build tool (ex: Maven with the [Maven Release Plugin](https://maven.apache.org/maven-release/maven-release-plugin/), Python with [Bumpversion](https://pypi.org/project/bumpversion/) or with the [Poetry Version](https://python-poetry.org/docs/cli/#version) command), but the release _Prepare_ can also be implemented by a separate tool/template such as [semantic-release](https://semantic-release.gitbook.io/semantic-release/) that can gracefully automates the release process (automatically determines the next version number based on Git commit messages, enforces [semantic versioning](https://semver.org/), generates the release notes, creates the tag and the GitLab release).

### Publish

As explained before, publishing a code package is not necessarily related to a release process (as some technologies - such as Maven - allow publishing _unstable_ package versions) but a release should always end by publishing the versioned packages.
As explained before, publishing a code package is not necessarily related to a release process (as some technologies - such as Maven - allow publishing _unstable_ package versions) but a release always ends by publishing the versioned packages (stage 2 _Perform_ hereabove).

As a result, all publish-capable templates are fully compatible with `semantic-release` or any alternative implementing the release process.