@szum-tech/semantic-release-preset v1.5.7
@szum-tech/semantic-release-preset
Semantic-release shareable configuration to publish GitHub projects using GitHub Actions workflows.
Features
- 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
versiontopackage.json.
Usage
Installation
@szum-tech/semantic-release-preset is available as an npm package.
npm:
npm install -D @szum-tech/semantic-release-preset semantic-release @types/semantic-releaseyarn:
yarn add -D @szum-tech/semantic-release-preset semantic-release @types/semantic-releaseSetup release configuration file
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).
Environment Variables Configuration
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)
Minimal GitHub Release workflow
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-releaseChangelog
The changelog is regularly updated to reflect what's changed in each new release.
License
This project is licensed under the terms of the MIT license.