Release Notes

This guide demonstrates how to generate release notes automatically using different CI/CD platforms.

Azure DevOps Pipeline

trigger: none
pr: none

pool:
  vmImage: 'ubuntu-latest'

variables:
  artifactName: 'ReleaseNotes'
  templatePath: './azure-pipelines/templates/release-notes-template.md'

stages:
- stage: GenerateReleaseNotes
  displayName: Generate Release Notes
  jobs:
    - job: GenerateReleaseNotes
      steps:
      - task: XplatGenerateReleaseNotes@3
        displayName: Generate Release Notes
        inputs:
          outputfile: '$(Build.ArtifactStagingDirectory)/ReleaseNotes.md'
          templateLocation: 'File'
          templatefile: $(templatePath)
          dumpPayloadToConsole: false
          dumpPayloadToFile: true
          replaceFile: true
          getParentsAndChildren: true
          searchCrossProjectForPRs: true
          githubRepository: ''
          githubToken: ''
          overrideExistingReleaseNotes: true
          stopOnError: true

      - task: PublishPipelineArtifact@1
        displayName: Publish Release Notes
        inputs:
          targetPath: '$(Build.ArtifactStagingDirectory)/ReleaseNotes.md'
          artifact: $(artifactName)
          publishLocation: 'pipeline'

## GitHub Actions Workflow

```yaml
name: Generate Release Notes

on:
  release:
    types: [created]

jobs:
  generate-release-notes:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Generate Release Notes
        uses: github/generate-release-notes@v1
        with:
          previous-tag: ${{ github.event.release.target_commitish }}
        
      - name: Update Release
        uses: softprops/action-gh-release@v1
        with:
          body_path: RELEASE_NOTES.md
          token: ${{ secrets.GITHUB_TOKEN }}

## GitLab CI Pipeline

```yaml
generate_release_notes:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  script:
    - |
      release-cli create \
        --name "Release $CI_COMMIT_TAG" \
        --description "$(./scripts/generate-release-notes.sh)" \
        --tag-name $CI_COMMIT_TAG \
        --ref $CI_COMMIT_SHA
  rules:
    - if: $CI_COMMIT_TAG

Modern Release Notes Template

Last updated