Skip to content

Latest commit

 

History

History

github

@actions/github

A hydrated Octokit client.

Usage

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!'});

Webhook payload typescript definitions

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}`)}

Extending the Octokit instance

@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",});
close