@actions/github
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.0 • Public • Published

    @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.

    const github = require('@actions/github');
    const core = require('@actions/core');
    
    async function run() {
        // 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-secret
        const myToken = core.getInput('myToken');
    
        const octokit = 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 } = await octokit.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.

    const result = await octokit.graphql(query, variables);

    Finally, you can get the context of the current action:

    const github = require('@actions/github');
    
    const context = github.context;
    
    const newIssue = await octokit.rest.issues.create({
      ...context.repo,
      title: 'New issue!',
      body: 'Hello Universe!'
    });

    Webhook payload typescript definitions

    The npm module @octokit/webhooks 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

    Then, assert the type based on the eventName

    import * as core from '@actions/core'
    import * as github from '@actions/github'
    import * as Webhooks from '@octokit/webhooks'
    if (github.context.eventName === 'push') {
      const pushPayload = github.context.payload as Webhooks.WebhookPayloadPush
      core.info(`The head commit is: ${pushPayload.head}`)
    }

    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'
    
    const octokit = GitHub.plugin(enterpriseServer220Admin)
    // or override some of the default values as well 
    // const octokit = GitHub.plugin(enterpriseServer220Admin).defaults({userAgent: "MyNewUserAgent"})
    
    const myToken = core.getInput('myToken');
    const myOctokit = new octokit(getOctokitOptions(token))
    // Create a new user
    myOctokit.rest.enterpriseAdmin.createUser({
      login: "testuser",
      email: "testuser@test.com",
    });

    Install

    npm i @actions/github

    DownloadsWeekly Downloads

    614,692

    Version

    5.0.0

    License

    MIT

    Unpacked Size

    20.6 kB

    Total Files

    18

    Last publish

    Collaborators

    • chrispat
    • bryanmacfarlane
    • hross
    • thboop
    • konradpabjan