fregante / daily-version-action

Creates a new tag using the format Y.M.D, but only if HEAD isn’t already tagged

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

daily-version-action

Creates a new tag using the format Y.M.D (using daily-version), but only if HEAD isn’t already tagged.

Ideally used on schedule, but you could also change the suggested condition to only make it run on main.

See usage real-world example on Refined GitHub’s repo

Usage

It expects git to be configured to push to the same repo. The v2 and later of actions/checkout automatically sets required token and, if not set, this action will use the git user daily-version-action <actions@users.noreply.github.com> to create the tag. This can be customized with something like setup-git-token.

See action.yml

  Version:
    steps:
    - uses: actions/checkout@v4
    - name: Create tag if necessary
      uses: fregante/daily-version-action@v2

You can use the DAILY_VERSION_CREATED and DAILY_VERSION environment variables created by this action to test whether a new version has been created:

    - name: Create tag if necessary
      uses: fregante/daily-version-action@v2
    - name: Created?
      if: env.DAILY_VERSION_CREATED
      runs: echo "Yes, created $DAILY_VERSION"

If you prefer, you can use its outputs too, which can also work across jobs:

    - name: Create tag if necessary
      id: version
      uses: fregante/daily-version-action@v2
    - name: Created?
      if: steps.version.outputs.created
      runs: echo "Created ${{ steps.version.outputs.version }}"

Inputs

  • prefix - Optional. You can specify what to prefix the tag name with. For example:
  Version:
    steps:
    - uses: actions/checkout@v4
    - name: Create tag if necessary
      uses: fregante/daily-version-action@v2
      with:
        prefix: v # This will cause the tags to start with v, like "v20.12.31`

Outputs

  • created - If this output exists, this action created a new tag.
  • version - The latest tag, whether it already existed or if it just created one.

Outputs can be used across jobs as well.

Examples

Nightly release

Here's a complete workflow to create a nightly release, when necessary: (original here)

on:
  schedule:
    - cron: '59 23 * * *'

jobs:
  Tag:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: fregante/daily-version-action@v2
      name: Create tag if necessary
      id: daily-version
    outputs: # Shares the action’s outputs to the Next jobs
      created: ${{ steps.daily-version.outputs.created }}
      version: ${{ steps.daily-version.outputs.version }}

  Next:
    needs: Tag
    if: needs.Tag.outputs.created
    runs-on: ubuntu-latest
    steps:
      - run: echo It looks like ${{ needs.Tag.outputs.version }} was created!

Related

About

Creates a new tag using the format Y.M.D, but only if HEAD isn’t already tagged

License:MIT License


Languages

Language:JavaScript 100.0%