I want to create a VM and setup as self-hosted runner during my workflow. Right now, what blocks me is the lack of API that gives me Runner Token. If this exists, I could create the instance and register it as a runner, being able to use it in the next job.
Does anyone now a workaround to get the runner token?
Looks like they have finally created the runner api. See the API specs here.
![[POST] /repos/{owner}/{repo}/actions/runners/registration-token](https://i.sstatic.net/6XFut.png)
They now also have example snippets on how to do this. See the other answer posted here for a complete example.
For now you have to create instances manually using the guide found here.
According to a github staff, there is a plan to eventually add an api for generating the runner tokens, but didn't disclose a timeline of when this could happen.
An API for this is on the roadmap. I don't have a timeline to share at the moment. But we'll be posting to the Changelog when this is available.
And to clear up some of the confusion around PATs/runner tokens. The runner token provided via the UI is a temporary token that expires after 60 minutes. It only has the ability to register runners.
PATs are not able to register runners.
The API for creating the Registration Token is available already:
Using the following JavaScript code, you can create the GitHub Registration Token inside of your GitHub Action:
const core = require('@actions/core');
const github = require('@actions/github');
async function getRegistrationToken() {
const githubToken = core.getInput('github_token'); // the GitHub Secret Token provided as an input of your GitHub Action using ${{ secrets.GITHUB_TOKEN }}
const octokit = github.getOctokit(githubToken);
const response = await octokit.request('POST /repos/{owner}/{repo}/actions/runners/registration-token', {
owner: github.context.repo.owner, // the value is taken from the environment variable GITHUB_REPOSITORY which is provided by the GitHub Action during runtime
repo: github.context.repo.repo, // the value is taken from the environment variable GITHUB_REPOSITORY which is provided by the GitHub Action during runtime
});
return response.data.token;
}
module.exports = {
getRegistrationToken,
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With