action.js
GitHub API client for GitHub Actions
Usage
Browsers
|
@octokit/action is not meant for browser usage.
|
---|
Node
|
Install with npm install @octokit/action
import { Octokit } from "@octokit/action";
|
---|
[!IMPORTANT]
As we use conditional exports, you will need to adapt your tsconfig.json
by setting "moduleResolution": "node16", "module": "node16"
.
See the TypeScript docs on package.json "exports".
See this helpful guide on transitioning to ESM from @sindresorhus
You can pass secret.GITHUB_TOKEN
or any of your own secrets to a Node.js script. For example
name: My Node Action
on:
- pull_request
jobs:
my-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install @octokit/action
- run: node .github/actions/my-script.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Setting GITHUB_TOKEN
on either with:
or env:
will work.
import { Octokit } from "@octokit/action";
const octokit = new Octokit();
Create an issue using REST API
import { Octokit } from "@octokit/action";
const octokit = new Octokit();
const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/");
const { data } = await octokit.request("POST /repos/{owner}/{repo}/issues", {
owner,
repo,
title: "My test issue",
});
console.log("Issue created: %s", data.html_url);
You can also use octokit.issues.create({ owner, repo, title })
. See the REST endpoint methods plugin for a list of all available methods.
Create an issue using GraphQL
import { Octokit } from "@octokit/action";
const octokit = new Octokit();
const eventPayload = require(process.env.GITHUB_EVENT_PATH);
const repositoryId = eventPayload.repository.node_id;
const response = await octokit.graphql(
`
mutation($repositoryId:ID!, $title:String!) {
createIssue(input:{repositoryId: $repositoryId, title: $title}) {
issue {
number
}
}
}
`,
{
repositoryId,
title: "My test issue",
},
);
Hooks, plugins, and more
@octokit/action
is build upon @octokit/core
. Refer to its README for the full API documentation.
TypeScript: Endpoint method parameters and responses
Types for endpoint method parameters and responses are exported as RestEndpointMethodTypes
. They keys are the same as the endpoint methods. Here is an example to retrieve the parameter and response types for octokit.checks.create()
import { RestEndpointMethodTypes } from `@octokit/action`;
type ChecksCreateParams =
RestEndpointMethodTypes["checks"]["create"]["parameters"];
type ChecksCreateResponse =
RestEndpointMethodTypes["checks"]["create"]["response"];
Proxy Servers
If you use self-hosted runners and require a proxy server to access internet resources then you will need to ensure that you have correctly configured the runner for proxy servers. @octokit/action
will pick up the configured proxy server environment variables and configure @octokit/core
with the correct request.dispatcher
using ProxyAgent. If you need to supply a different request.dispatcher
then you should ensure that it handles proxy servers if needed.
How it works
@octokit/action
is simply a @octokit/core
constructor, pre-authenticate using @octokit/auth-action
.
The source code is … simple: src/index.ts
.
License
MIT