Skip to content

Commit 0bc8d3c

Browse files
committed
add paragraph about release strategy, preparation and execution
1 parent 2809b56 commit 0bc8d3c

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
1515
<li><a href="#requestingIcon">Requesting An Icon</a></li>
1616
<li><a href="#teams">Maintainer/Reviewer/Teams</a></li>
1717
<li><a href="#buildScript">Regarding the Build Script</a></li>
18+
<li><a href="#release">Release strategy, conventions, preparation and execution</a></li>
1819
</ul>
1920

2021
<hr>
@@ -299,3 +300,30 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
299300
<li>Comment on the PR so maintainers don't have to manually upload icon result.</li>
300301
<li>Publishing a new release to <a href="https://www.npmjs.com/package/devicon">npm</a>; See <a href="https://github.com/devicons/devicon/issues/288">#288</a></li>
301302
</ul>
303+
304+
<h2 id='release'>Release strategy, conventions, preparation and execution</h2>
305+
<h5>Release strategy</h5>
306+
<p>Devicon does not follow a strict release plan. A new release is depended on current amount of contributions, required bugfixes/patches and will be discussed by the team of maintainers.</p>
307+
<p>Generally speaking: A new release will be published when new icons are added or a bug was fixed. When it's predictable that multiple icons are added in a foreseeable amount of time they are usually wrapped together.</p>
308+
<h5>Conventions</h5>
309+
<p>The version naming follows the rules of <a href="https://semver.org/">Semantic Versioning</a>. Given a version number MAJOR.MINOR.PATCH, increment the:</p>
310+
<ul>
311+
<li>MAJOR version when you make incompatible API changes,</li>
312+
<li>MINOR version when you add functionality <b>(like a new icon)</b> in a backwards compatible manner, and</li>
313+
<li>PATCH version when you make backwards compatible bug fixes.</li>
314+
</ul>
315+
<h5>Release preparation and execution</h5>
316+
<ol>
317+
<li>Define the next release version number based on the conventions</li>
318+
<li>Checkout <code>development</code> as <code>draft-release</code> branch</li>
319+
<li>Bump the package version using <code>npm version v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i> -m "bump npm version to v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i>"</code> (see <code><a href="https://github.com/devicons/devicon/pull/497">#487</a></code>)</li>
320+
<li>Push the branch <code>draft-release</code></li>
321+
<li>Manually trigger the workflow <code><a href="https://github.com/devicons/devicon/actions/workflows/build_icons.yml">build_icons.yml</a></code> (which has a <code>workflow_dispatch</code> event trigger) and select the branch <code>draft-release</code> as target branch. This will build a font version of all icons using icomoon and automatically creates a pull request to merge the build result back into <code>draft-release</code></li>
322+
<li>Review and approve the auto-create pull request created by the action of the step above</li>
323+
<li>Create a pull request towards <code>development</code>. Mention the release number in the pull request title and add information about all new icons, fixes, features and enhancements in the description of the pull request. It's also a good idea to mention and thank all contributions who participated in the release (take description of <code><a href="https://github.com/devicons/devicon/pull/504">#504</a></code> as an example).</li>
324+
<li>Wait for review and approval of the pull request (<b>DON'T</b> perform a squash-merge)</li>
325+
<li>Once merged create a pull request with BASE <code>master</code> and HEAD <code>development</code>. Copy the description of the earlier pull request.</li>
326+
<li>Since it was already approved in the 'development' stage a maintainer is allowed to merge it (<b>DON'T</b> perform a squash-merge).</li>
327+
<li>Create a <a href="https://github.com/devicons/devicon/releases/new">new release</a> using v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i> as tag and release title. Use the earlier created description as description of the release.</li>
328+
<li>Publishing the release will trigger the <a href="/.github/workflows/npm_publish.yml">npm_publish.yml</a> workflow which will execute a <code>npm publish</code> leading to a updated <a href="https://www.npmjs.com/package/devicon">npm package</a> (v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i>).</li>
329+
</ol>

0 commit comments

Comments
 (0)