GitHub Actions
Generate release notes automatically when you create a tag or release.
Basic workflow
Create .github/workflows/release.yml:
name: Release
on:
push:
tags: ['v*']
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate release notes
id: shipi
run: npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) -o release-notes.md
env:
SHIPI_API_KEY: ${{ secrets.SHIPI_API_KEY }}
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
body_path: release-notes.md
Setup
- Get your API key from the dashboard
- Add
SHIPI_API_KEYto your repository secrets (Settings → Secrets → Actions) - Push a tag to trigger the workflow
Options
Specify audience
- name: Generate release notes
run: npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) --audience changelog -o release-notes.md
Include ticket links
- name: Generate release notes
run: npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) --tickets -o release-notes.md
Enable diff analysis
- name: Generate release notes
run: npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) --diff -o release-notes.md
Trigger on release creation
Instead of tags, trigger when a release is created:
on:
release:
types: [created]
jobs:
update-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate release notes
run: npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) -o release-notes.md
env:
SHIPI_API_KEY: ${{ secrets.SHIPI_API_KEY }}
- name: Update release body
run: gh release edit ${{ github.event.release.tag_name }} --notes-file release-notes.md
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}