shipi | docs

GitLab CI

Generate release notes automatically in your GitLab CI/CD pipeline.

Basic pipeline

Add to .gitlab-ci.yml:

release:
  stage: deploy
  image: node:20
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) -o release-notes.md
  release:
    tag_name: $CI_COMMIT_TAG
    description: release-notes.md
  variables:
    SHIPI_API_KEY: $SHIPI_API_KEY
    GIT_DEPTH: 0

Setup

  1. Get your API key from the dashboard
  2. Add SHIPI_API_KEY as a CI/CD variable (Settings → CI/CD → Variables)
  3. Push a tag to trigger the pipeline

With curl (alternative)

release:
  stage: deploy
  image: node:20
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) -o release-notes.md
    - |
      curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
           --header "Content-Type: application/json" \
           --request POST \
           --data "{
             \"name\": \"${CI_COMMIT_TAG}\",
             \"tag_name\": \"${CI_COMMIT_TAG}\",
             \"description\": \"$(cat release-notes.md)\"
           }" \
           "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases"
  variables:
    SHIPI_API_KEY: $SHIPI_API_KEY
    GIT_DEPTH: 0

Options

With diff analysis

script:
  - npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) --diff -o release-notes.md

With ticket extraction

script:
  - npx @shipi/cli generate --from $(git describe --abbrev=0 HEAD^) --tickets -o release-notes.md