Semantic-release shareable configuration to publish GitHub projects using GitHub Actions workflows.
- Uses Conventional Commits to generate release notes, changelogs and determine the version for new releases.
- Creates or updates a CHANGELOG.md file.
- Publishes to npm (optional).
- Creates a new release on GitHub
- Updates GitHub issues and PRs that are resolved by a new release.
- Commits and pushes the current
version
topackage.json
.
@szum-tech/semantic-release-preset is available as an npm package.
npm:
npm install -D @szum-tech/semantic-release-preset semantic-release @types/semantic-release
yarn:
yarn add -D @szum-tech/semantic-release-preset semantic-release @types/semantic-release
First create release.config.js
file in main project root and add configuration:
/** @type {import('semantic-release').Options} */
module.exports = {
branches: ["main"],
extends: "@szum-tech/semantic-release-preset"
// OR
// if you don't want to publish your project on npm, please use:
// extends: "@szum-tech/semantic-release-preset/without-npm"
};
The branches
array is mandatory, and in most repositories you should put the default git branch here (main
, or master
if it's an older repository).
Ensure that your CI configuration has the following environment variables set:
- GITHUB_TOKEN: A GitHub personal access token
- NPM_TOKEN: A npm personal access token (optional if you don't publish your project on npm)
This is the bare minimum required steps to trigger a new release. This will push a new release every time an eligible commit is pushed to git. Check the opinionated flow to see how to trigger releases manually. Create .github/workflows/publish.yml
:
name: Publish 🚀
on:
push:
branches: [main]
jobs:
publish:
name: Publish 🚀
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [18.x]
os: [ubuntu-latest]
steps:
- name: Checkout code 📚
uses: actions/checkout@v3
- name: Set up Node 🟢
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install packages ⚙️
run: npm ci
# run: yarn install --frozen-lockfile
- name: Publish package 🚀
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # OPTIONAL if you don't publish your project on npm
run: npx semantic-release
# run: yarn semantic-release
The changelog is regularly updated to reflect what's changed in each new release.
This project is licensed under the terms of the MIT license.