shipi | docs

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

  1. Get your API key from the dashboard
  2. Add SHIPI_API_KEY to your repository secrets (Settings → Secrets → Actions)
  3. 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
- 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 }}