A hydrated Octokit client.
Returns an authenticated Octokit client that follows the machine proxy settings and correctly sets GHES base urls. See https://octokit.github.io/rest.js for the API.
constgithub=require('@actions/github');constcore=require('@actions/core');asyncfunctionrun(){// This should be a token with access to your repository scoped in as a secret.// The YML workflow will need to set myToken with the GitHub Secret Token// myToken: ${{ secrets.GITHUB_TOKEN }}// https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#about-the-github_token-secretconstmyToken=core.getInput('myToken');constoctokit=github.getOctokit(myToken)// You can also pass in additional options as a second parameter to getOctokit// const octokit = github.getOctokit(myToken, {userAgent: "MyActionVersion1"});const{data: pullRequest}=awaitoctokit.rest.pulls.get({owner: 'octokit',repo: 'rest.js',pull_number: 123,mediaType: {format: 'diff'}});console.log(pullRequest);}run();
You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API.
constresult=awaitoctokit.graphql(query,variables);
Finally, you can get the context of the current action:
constgithub=require('@actions/github');constcontext=github.context;constnewIssue=awaitoctokit.rest.issues.create({ ...context.repo,title: 'New issue!',body: 'Hello Universe!'});
The npm module @octokit/webhooks-definitions
provides type definitions for the response payloads. You can cast the payload to these types for better type information.
First, install the npm module npm install @octokit/webhooks-definitions
Then, assert the type based on the eventName
import*ascorefrom'@actions/core'import*asgithubfrom'@actions/github'import{PushEvent}from'@octokit/webhooks-definitions/schema'if(github.context.eventName==='push'){constpushPayload=github.context.payloadasPushEventcore.info(`The head commit is: ${pushPayload.head_commit}`)}
@octokit/core
now supports the plugin architecture. You can extend the GitHub instance using plugins.
For example, using the @octokit/plugin-enterprise-server
you can now access enterprise admin apis on GHES instances.
import{GitHub,getOctokitOptions}from'@actions/github/lib/utils'import{enterpriseServer220Admin}from'@octokit/plugin-enterprise-server'constoctokit=GitHub.plugin(enterpriseServer220Admin)// or override some of the default values as well // const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"})constmyToken=core.getInput('myToken');constmyOctokit=newoctokit(getOctokitOptions(token))// Create a new usermyOctokit.rest.enterpriseAdmin.createUser({login: "testuser",email: "testuser@test.com",});