Home

Awesome

create-tag-action

Buy me a coffee CI Repo Dependents

Auto create tags from commit or package.json

Inputs

Outputs

- 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