Awesome Open Source
Awesome Open Source

GitHub Slug action

Actions Status GitHub Super-Linter Public workflows that use this action. Licence

This GitHub Action will expose the slug value of all GitHub environment variables inside your GitHub workflow.

Slug a variable will

  • put the variable content in lower case
  • replace any character by - except 0-9, a-z, and .
  • remove leading and trailing - character
  • limit the string size to 63 characters

Others Slug-ish commands are available:

  • Slug URL a variable will be like the slug variable but the . character will also be replaced by -
  • Short SHA a variable will limit the string size to 8 characters

Exposed GitHub environment variables

- name: Inject slug/short variables
  uses: rlespinasse/[email protected]

- name: Print slug/short variables
  run: |
    echo "Slug variables"
    echo "   ref                 : ${{ env.GITHUB_REF_SLUG }}"
    echo "   head ref            : ${{ env.GITHUB_HEAD_REF_SLUG }}"
    echo "   base ref            : ${{ env.GITHUB_BASE_REF_SLUG }}"
    echo "   event ref           : ${{ env.GITHUB_EVENT_REF_SLUG }}"
    echo "   repository          : ${{ env.GITHUB_REPOSITORY_SLUG }}"
    echo "Slug URL variables"
    echo "   ref                 : ${{ env.GITHUB_REF_SLUG_URL }}"
    echo "   head ref            : ${{ env.GITHUB_HEAD_REF_SLUG_URL }}"
    echo "   base ref            : ${{ env.GITHUB_BASE_REF_SLUG_URL }}"
    echo "   event ref           : ${{ env.GITHUB_EVENT_REF_SLUG_URL }}"
    echo "   repository          : ${{ env.GITHUB_REPOSITORY_SLUG_URL }}"
    echo "Short SHA variables"
    echo "   sha                 : ${{ env.GITHUB_SHA_SHORT }}"
    echo "   pull request sha    : ${{ env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT }}"

Read default environment variables page for more information.

TIP: Use Dependabot to maintain your github-slug-action version updated in your GitHub workflows.

GITHUB_REF_SLUG / GITHUB_REF_SLUG_URL

Slug the environment variable GITHUB_REF

The branch or tag ref that triggered the workflow. If neither a branch or tag is available for the event type, the variable will not exist.

GITHUB_REF GITHUB_REF_SLUG GITHUB_REF_SLUG_URL
refs/heads/master master master
refs/heads/feat/new_feature feat-new-feature feat-new-feature
refs/tags/v1.0.0 v1.0.0 v1-0-0
refs/tags/[email protected] product-1.0.0-rc.2 product-1-0-0-rc-2
refs/heads/New_Awesome_Product new-awesome-product new-awesome-product

NOTE : GITHUB_REF_SLUG_URL is design to be used as subdomain in an URL.

Additional variables (only set for forked repositories) :

  • GITHUB_HEAD_REF_SLUG/GITHUB_HEAD_REF_SLUG_URL, The branch of the head repository GITHUB_HEAD_REF
  • GITHUB_BASE_REF_SLUG/GITHUB_BASE_REF_SLUG_URL, The branch of the base repository GITHUB_BASE_REF

Additional variables (only set for create, and delete webhook events with ref data) :

  • GITHUB_EVENT_REF_SLUG/GITHUB_EVENT_REF_SLUG_URL, The git reference resource associated to the webhook.

GITHUB_REPOSITORY_SLUG / GITHUB_REPOSITORY_SLUG_URL

Slug the environment variable GITHUB_REPOSITORY

The owner and repository name.

GITHUB_REPOSITORY GITHUB_REPOSITORY_SLUG GITHUB_REPOSITORY_SLUG_URL
octocat/Hello-World octocat-hello-world octocat-hello-world
rlespinasse/Hello-World.go rlespinasse-hello-world.go rlespinasse-hello-world-go

NOTE : GITHUB_REPOSITORY_SLUG_URL is design to be used as subdomain in an URL.

GITHUB_SHA_SHORT

Short the environment variable GITHUB_SHA

The commit SHA that triggered the workflow

GITHUB_SHA GITHUB_SHA_SHORT
ffac537e6cbbf934b08745a378932722df287a53 ffac537e

GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT

Short the value of github.event.pull_request.head.sha that represents the last commit used for triggering an action for a pull request.

github.event.pull_request.head.sha GITHUB_EVENT_PULL_REQUEST_HEAD_SHA_SHORT
ffac537e6cbbf934b08745a378932722df287a53 ffac537e

Use slug variable in an URL

In an URL, use <GITHUB_VARIABLE>_SLUG_URL instead of <GITHUB_VARIABLE>_SLUG as subdomain to be compliant.

NOTE : <GITHUBVARIABLE>_SLUG can be used in an URL only as part of the _resource path.

- name: Inject slug/short variables
  uses: rlespinasse/[email protected]

- name: Deploy dummy application using slug in the 'subdomain' part
  run: |
    ./deploy-application.sh --url "https://${{ env.<GITHUB_VARIABLE>_SLUG_URL }}.staging.app.mycompany.com"

- name: Deploy dummy application using slug in the 'resource path' part
  run: |
    ./deploy-application.sh --url "https://staging.app.mycompany.com/${{ env.<GITHUB_VARIABLE>_SLUG }}"

Contribute

Follow Developers guide

Troubleshooting

Missing master branch

If your workflow fail on the Set up job task with this kind of log :

Download action repository 'rlespinasse/[email protected]'
##[error]An action could not be found at the URI 'https://api.github.com/repos/rlespinasse/github-slug-action/tarball/master'

Please, use the current branch v3.x or a version tag (see releases pages) in order to fix your workflow.

The master branch don't exists anymore.

The master branch EOL have been set to 2020-10-25 after a 6-month deprecation period (more information on the EOL issue)

Thanks for talking about us


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
typescript (9,902
continuous-integration (184
continuous-delivery (111
continuous-deployment (91
github-action (47
workflows (40
slug (17

Find Open Source By Browsing 7,000 Topics Across 59 Categories