#!/bin/bash # https://github.com/myoung34/docker-github-actions-runner/blob/master/token.sh # Licensed under MIT # https://github.com/myoung34/docker-github-actions-runner/blob/master/LICENSE set -euo pipefail _GITHUB_HOST=${GITHUB_HOST:="github.com"} # If URL is not github.com then use the enterprise api endpoint if [[ ${GITHUB_HOST} = "github.com" ]]; then URI="https://api.${_GITHUB_HOST}" else URI="https://${_GITHUB_HOST}/api/v3" fi API_VERSION=v3 API_HEADER="Accept: application/vnd.github.${API_VERSION}+json" AUTH_HEADER="Authorization: token ${ACCESS_TOKEN}" CONTENT_LENGTH_HEADER="Content-Length: 0" case ${RUNNER_SCOPE} in org*) _FULL_URL="${URI}/orgs/${ORG_NAME}/actions/runners/registration-token" ;; ent*) _FULL_URL="${URI}/enterprises/${ENTERPRISE_NAME}/actions/runners/registration-token" ;; *) _PROTO="https://" # shellcheck disable=SC2116 _URL="$(echo "${REPO_URL/${_PROTO}/}")" _PATH="$(echo "${_URL}" | grep / | cut -d/ -f2-)" _ACCOUNT="$(echo "${_PATH}" | cut -d/ -f1)" _REPO="$(echo "${_PATH}" | cut -d/ -f2)" _FULL_URL="${URI}/repos/${_ACCOUNT}/${_REPO}/actions/runners/registration-token" ;; esac RUNNER_TOKEN="$(curl -XPOST -fsSL \ -H "${CONTENT_LENGTH_HEADER}" \ -H "${AUTH_HEADER}" \ -H "${API_HEADER}" \ "${_FULL_URL}" \ | jq -r '.token')" echo "{\"token\": \"${RUNNER_TOKEN}\", \"full_url\": \"${_FULL_URL}\"}"