Search code examples
githubautomationversioningcontinuous-deliverygithub-actions

How to version build artifacts using GitHub Actions?


My use case is I want to have a unique version number for artifacts per each build/run. With current tools like CircleCI, Travis, etc. there is a build number available which is basically a counter that always goes up. So, I can create version strings like 0.1.0-27. This counter is increased each time even for the same commit.

How can I do something similar with GitHub Actions? Github actions only offer GITHUB_SHA and GITHUB_REF.


Solution

  • GitHub Actions now has a unique number and ID for a run/build in the github context.

    github.run_id : A unique number for each workflow run within a repository. This number does not change if you re-run the workflow run.

    github.run_number : A unique number for each run of a particular workflow in a repository. This number begins at 1 for the workflow's first run, and increments with each new run. This number does not change if you re-run the workflow run.

    github.run_attempt : A unique number for each attempt of a particular workflow run in a repository. This number begins at 1 for the workflow run's first attempt, and increments with each re-run.

    ref: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context

    You can reference them in workflows like this:

    - name: Output Run ID
      run: echo ${{ github.run_id }}
    - name: Output Run Number
      run: echo ${{ github.run_number }}
    - name: Output Run Attempt
      run: echo ${{ github.run_attempt }}