An open API service indexing awesome lists of open source software.

https://github.com/douglasneuroinformatics/semantic-release

Semantic release configuration and workflows for DNP projects
https://github.com/douglasneuroinformatics/semantic-release

Last synced: 5 months ago
JSON representation

Semantic release configuration and workflows for DNP projects

Awesome Lists containing this project

README

          



Logo

@douglasneuroinformatics/semantic-release



Semantic release configuration and workflows for DNP projects


![license](https://img.shields.io/github/license/DouglasNeuroInformatics/semantic-release)
![version](https://img.shields.io/github/package-json/v/DouglasNeuroInformatics/semantic-release)



## About

This is a convenience wrapper around [semantic-release](https://github.com/semantic-release/semantic-release) designed to be used with GitHub Actions. It uses [conventional commit messages](https://www.conventionalcommits.org/en/v1.0.0/) to generate release notes and a changelog. When a release is necessary, it is automatically published to npm, pushing the newly created tag, revised package.json and updated changelog to GitHub.

## Installation

```sh
pnpm add -D @douglasneuroinformatics/semantic-release husky
```

> Note: Husky is an optional peer dependency, and could be replaced with any other toolchain that ensures that conventional commits are followed.

## Configuration

First, setup Husky (if applicable):

```sh
pnpm exec husky init
```

Then, add the following git hook:

**`.husky/commit-msg`**

```sh
#!/bin/sh

pnpm exec commitlint --edit $1
```

Now, add the following configuration:

**`package.json`**

```json
{
"commitlint": {
"extends": ["@douglasneuroinformatics/semantic-release/commitlint-config"]
},
"release": {
"extends": ["@douglasneuroinformatics/semantic-release"]
}
}
```

Next, generate an access token for [npm](https://www.npmjs.com/) with read and write permissions for the package in question and set the `NPM_TOKEN` secret for the repository.

Then, add the following workflow:

**`.github/workflows/release.yaml`**

```yaml
name: Release
on:
push:
branches: ['main']
workflow_dispatch:
permissions:
contents: read
jobs:
release:
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
uses: DouglasNeuroinformatics/semantic-release/.github/workflows/release.yaml@main
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
with:
build-command: pnpm build # optional
lint-command: pnpm lint # optional
test-command: pnpm test # optional
```