Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
edit

GitHub Action

generate-changelog-action

v1.3.0

generate-changelog-action

edit

generate-changelog-action

GitHub Action for lob/generate-changelog

Installation

Copy and paste the following snippet into your .yml file.

              

- name: generate-changelog-action

uses: ScottBrenner/[email protected]

Learn more about this action in ScottBrenner/generate-changelog-action

Choose a version

generate-changelog-action

GitHub Action for lob/generate-changelog. Intended to be used with actions/create-release.

Note: Your repository must contain a package.json file.

Created during the GitHub Actions Hackathon 2020 and selected as one of the winning projects!

Example workflow - create a release

Extends actions/create-release: Example workflow - create a release to generate changelog from git commits and use it as the body for the GitHub release.

on:
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

name: Create Release

jobs:
  build:
    name: Create Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Changelog
        uses: scottbrenner/generate-changelog-action@master
        id: Changelog
      - name: Create Release
        id: create_release
        uses: actions/create-release@latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          body: |
            ${{ steps.Changelog.outputs.changelog }}
          draft: false
          prerelease: false

The above workflow will create a release that looks like: Release

If your package.json isn't available in root, you can pass the directory of the package.json:

      - name: Changelog
        uses: scottbrenner/generate-changelog-action@master
        id: Changelog
        with:
          package-dir: 'root/to/my/package.json'

If your use case does not need to generate changelog from latest and latest-1 tags, you can pass the custom flags. An example is when your release tag on git is generated after the changelog so you must use something like git log v1..HEAD --oneline:

      - name: Changelog
        uses: scottbrenner/generate-changelog-action@master
        id: Changelog
        with:
          package-dir: 'root/to/my/package.json'
          from-tag: v1.0
          to-tag: HEAD

For more information, see actions/create-release: Usage and lob/generate-changelog: Usage

Property Default Description
package-dir package.json The path for the package.json if it is not in root
from-tag "last tag" The tag to generate changelog from. If not set, fallbacks to git last tag -1. Ex.: v1.0
to-tag "current tag" The tag to generate changelog up to. If not set, fallbacks to git last tag. Ex.: v2.0
type Unset The type of changelog to generate: patch, minor, or major. If not set, fallbacks to unset.
exclude Unset Exclude selected commit types (comma separated). If not set, fallbacks to unset.
allow-unknown Unset Allow unknown commit types. If not set, fallbacks to unset.