top
Using my app is also a way to support me:
Scap: Screenshot & Markup Edit Screen Test Deskmark Keyzer Vidwall Hub VidCrop Vidwall Mousio Hint Mousio Musicer Audioer FileSentinel FocusCursor Videoer KeyClicker DayBar Iconed Menuist Quick RSS Quick RSS Web Serve Copybook Generator DevTutor for SwiftUI RegexMate Time Passage Iconize Folder Textsound Saver Create Custom Symbols DevHub Resume Revise Palette Genius Symbol Scribe

create-tag-action

Buy me a coffee Follow On X 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