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
- Host: GitHub
- URL: https://github.com/douglasneuroinformatics/semantic-release
- Owner: DouglasNeuroInformatics
- License: apache-2.0
- Created: 2024-07-19T13:47:16.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-15T17:43:12.000Z (over 1 year ago)
- Last Synced: 2025-09-24T06:58:38.532Z (10 months ago)
- Language: JavaScript
- Size: 377 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
@douglasneuroinformatics/semantic-release
Semantic release configuration and workflows for DNP projects


## 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
```