Skip to content

jaywcjlove/create-tag-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

create-tag-action

Buy me a coffee CI Repo Dependents

Auto create tags from commit or package.json

Inputs

  • token Your GITHUB_TOKEN. This is required. Why do we need token? Read more here: About the GITHUB_TOKEN secret. Default: ${{ github.token }}
  • version Create tag for specified version. Exampe: version: v1.0.0
  • test The regular expression matches the submitted content. Exampe: test: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'
  • commit The regular expression matches the submitted content. Default: {github.context.payload?.head_commit?.message}
  • package-path The path of the package.json file. Default package.json.
  • release Optionally marks this tag as release. Set to true to enable.
  • prerelease Optionally marks this release as prerelease. Set to true to enable.
  • draft Optionally marks this release as a draft release. Set to true to enable.
  • body An optional body for the release.

Outputs

  • version The version number of the tag created, example: v1.0.0.
  • versionNumber The version number of the tag created, example: 1.0.0.
  • preversion The previous tag version number, example: v1.0.0.
  • preversionNumber The previous tag version number of the tag created. example: 1.0.0.
  • successful The tag was successfully created. example: "true".
  • majorVersion MAJOR version when you make incompatible API changes.
  • minorVersion MINOR version when you add functionality in a backwards compatible manner, and.
  • patchVersion PATCH version when you make backwards compatible bug fixes.
- run: echo "version - ${{ steps.create_tag.outputs.version }}"
- run: echo "version || preversion - ${{ steps.create_tag.outputs.version || steps.create_tag.outputs.preversion }}"
- run: echo "versionNumber - ${{ steps.create_tag.outputs.versionNumber }}"
- run: echo "versionNumber || preversionNumber - ${{ steps.create_tag.outputs.versionNumber || steps.create_tag.outputs.preversionNumber }}"
- run: echo "majorVersion - ${{ steps.create_tag.outputs.majorVersion }}"
- run: echo "minorVersion - ${{ steps.create_tag.outputs.minorVersion }}"
- run: echo "patchVersion - ${{ steps.create_tag.outputs.patchVersion }}"
- run: echo "preversion - ${{ steps.create_tag.outputs.preversion }}"
- run: echo "successful - ${{ steps.create_tag.outputs.successful }}"

Warning

In the new action, you need to add the permissions configuration:

jobs: 
  tags:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Create Tag
        id: create_tag
        uses: jaywcjlove/create-tag-action@main
        if: env.previous_tag
        with:
          test: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'

Example Usage

First, we must listen for push events

on:
  push:
    branches:
      - master
    paths-ignore:
      - '.github/**/*.yml'
      - '.gitignore'

Compare the tag version number in package.json with the last tag and automatically generate tags

- run: echo "previous_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo '')" >> $GITHUB_ENV
- name: Create Tag
  id: create_tag
  uses: jaywcjlove/create-tag-action@main
  if: env.previous_tag
  with:
    package-path: ./package.json

Or, Compare the tag version number in the commit content with the last tag and automatically generate tags

- run: echo "previous_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo '')" >> $GITHUB_ENV
- name: Create Tag
  id: create_tag
  uses: jaywcjlove/create-tag-action@main
  if: env.previous_tag
  with:
    test: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'

Use steps.<job_id>.outputs.successful to determine whether the version is created successfully, and a changelog will be automatically generated.

- name: Generate Changelog
  id: changelog
  uses: jaywcjlove/changelog-generator@main
  if: steps.create_tag.outputs.successful == 'true'
  with:
    head-ref: ${{steps.create_tag.outputs.version}}
    filter-author: (jaywcjlove|小弟调调™|dependabot\[bot\]|Renovate Bot)
    filter: (^[\s]+?[R|r]elease)|(^[R|r]elease)

Use steps.<job_id>.outputs.successful to determine whether the version is created successfully, the creation has been released

- name: Create Release
  uses: ncipollo/release-action@v1
  if: steps.create_tag.outputs.successful == 'true'
  with:
    allowUpdates: true
    token: ${{ secrets.GITHUB_TOKEN }}
    name: ${{ steps.create_tag.outputs.version }}
    tag: ${{ steps.create_tag.outputs.version }}
    body: |
      ```bash
      npm i @uiw/react-heat-map@${{steps.create_tag.outputs.versionNumber}}
      ```

      ${{ steps.changelog.outputs.compareurl }}
      ${{ steps.changelog.outputs.changelog }}

OR use jaywcjlove/create-tag-action@main create release:

- name: Create Release
  uses: jaywcjlove/create-tag-action@main
  id: release
  if: steps.create_tag.outputs.successful == 'true'
  with:
    version: ${{steps.create_tag.outputs.version}}
    release: true
    body: |
      ```bash
      npm i @uiw/react-heat-map@${{steps.create_tag.outputs.versionNumber}}
      ```

      ${{ steps.changelog.outputs.compareurl }}
      ${{ steps.changelog.outputs.changelog }}

- name: Release Upload Assets
  uses: jaywcjlove/github-action-upload-assets@main
  continue-on-error: true
  with:
    tag: ${{ steps.release.outputs.version }}
    asset-path: '["./target/release/sgo-*"]'

See Also

Example

License

The scripts and documentation in this project are released under the MIT License

About

Auto create tags from commit or package.json

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •