Skip to content

Semantic-release shareable configuration to publish GitHub projects using GitHub Actions workflows.

License

Notifications You must be signed in to change notification settings

JanSzewczyk/semantic-release-preset

Repository files navigation

@szum-tech/semantic-release-preset

GitHub release (latest by date) GitHub pull requests GitHub issues GitHub Repo stars

released

npm npm

Conventional Commits license


Semantic-release shareable configuration to publish GitHub projects using GitHub Actions workflows.

Features

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-release

yarn:

yarn add -D @szum-tech/semantic-release-preset semantic-release @types/semantic-release

Setup 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:

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-release

Changelog

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.