replace direct octokit deps with @actions/github types

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax
2026-01-28 16:29:31 +01:00
parent 2806b0ceaf
commit 537174131a
5 changed files with 30 additions and 33 deletions

View File

@@ -16,7 +16,7 @@
import {beforeEach, describe, expect, it, jest} from '@jest/globals';
import {Git} from '../src/git';
import {Git as GitMocked} from '../src/git';
import {Exec} from '../src/exec';
import {ExecOutput} from '@actions/exec';
@@ -46,7 +46,7 @@ describe('context', () => {
exitCode: 0
});
});
const ctx = await Git.context();
const ctx = await GitMocked.context();
expect(ctx.ref).toEqual('refs/heads/test');
expect(ctx.sha).toEqual('test-sha');
});
@@ -56,7 +56,7 @@ describe('isInsideWorkTree', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.isInsideWorkTree();
await GitMocked.isInsideWorkTree();
} catch {
// noop
}
@@ -69,9 +69,12 @@ describe('isInsideWorkTree', () => {
describe('remoteSha', () => {
it('returns sha using git ls-remote', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
expect(await GitMocked.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
it('returns sha using github api', async () => {
jest.resetModules();
jest.unmock('@actions/github');
const {Git} = await import('../src/git');
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head', process.env.GITHUB_TOKEN)).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
});
@@ -80,7 +83,7 @@ describe('remoteURL', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.remoteURL();
await GitMocked.remoteURL();
} catch {
// noop
}
@@ -111,7 +114,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/test');
});
@@ -135,7 +138,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
@@ -159,7 +162,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
@@ -183,7 +186,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/pull/221/merge');
});
@@ -207,7 +210,7 @@ describe('ref', () => {
});
});
await expect(Git.ref()).rejects.toThrow('Cannot find detached HEAD ref in "wrong, HEAD, tag: 8.0.0"');
await expect(GitMocked.ref()).rejects.toThrow('Cannot find detached HEAD ref in "wrong, HEAD, tag: 8.0.0"');
});
it('returns mocked detached branch ref', async () => {
@@ -229,7 +232,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/test');
});
@@ -253,7 +256,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/feature-branch');
});
@@ -280,7 +283,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/main');
});
@@ -307,7 +310,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/main');
});
@@ -337,7 +340,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/heads/feature');
});
@@ -370,7 +373,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/tags/v1.0.0');
});
@@ -403,7 +406,7 @@ describe('ref', () => {
});
});
await expect(Git.ref()).rejects.toThrow('Cannot infer ref from detached HEAD');
await expect(GitMocked.ref()).rejects.toThrow('Cannot infer ref from detached HEAD');
});
it('handles remote ref without branch pattern when inferring from remote', async () => {
@@ -431,7 +434,7 @@ describe('ref', () => {
});
});
const ref = await Git.ref();
const ref = await GitMocked.ref();
expect(ref).toEqual('refs/remotes/unusual-format');
});
@@ -441,7 +444,7 @@ describe('fullCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.fullCommit();
await GitMocked.fullCommit();
} catch {
// noop
}
@@ -456,7 +459,7 @@ describe('shortCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.shortCommit();
await GitMocked.shortCommit();
} catch {
// noop
}
@@ -471,7 +474,7 @@ describe('tag', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.tag();
await GitMocked.tag();
} catch {
// noop
}
@@ -484,7 +487,7 @@ describe('tag', () => {
describe('getCommitDate', () => {
it('head', async () => {
const date = await Git.commitDate('HEAD');
const date = await GitMocked.commitDate('HEAD');
await expect(date).toBeInstanceOf(Date);
});
});

View File

@@ -55,8 +55,6 @@
"@actions/io": "^2.0.0",
"@actions/tool-cache": "^3.0.1",
"@azure/storage-blob": "^12.29.1",
"@octokit/core": "^7.0.6",
"@octokit/plugin-rest-endpoint-methods": "^17.0.0",
"@sigstore/bundle": "^4.0.0",
"@sigstore/sign": "^4.1.0",
"@sigstore/tuf": "^4.0.1",

View File

@@ -16,9 +16,6 @@
import * as core from '@actions/core';
import * as github from '@actions/github';
import {Octokit} from '@octokit/core';
import {restEndpointMethods} from '@octokit/plugin-rest-endpoint-methods';
import {Exec} from './exec.js';
import {GitHub} from './github.js';
@@ -47,9 +44,9 @@ export class Git {
// if we have a token and this is a GitHub repo we can use the GitHub API
if (token && repoMatch) {
core.setSecret(token);
const octokit = new (Octokit.plugin(restEndpointMethods).defaults({
const octokit = github.getOctokit(token, {
baseUrl: GitHub.apiURL
}))({auth: token});
});
const [owner, repoName] = repoMatch.slice(1, 3);
try {
return (

View File

@@ -16,7 +16,7 @@
import * as core from '@actions/core';
import {AnnotationProperties} from '@actions/core';
import {components as OctoOpenApiTypes} from '@octokit/openapi-types';
import type {getOctokit} from '@actions/github';
import {JwtPayload} from 'jwt-decode';
import {BakeDefinition} from './buildx/bake.js';
@@ -39,7 +39,8 @@ export interface GitHubContentOpts {
path: string;
}
export type GitHubRepo = OctoOpenApiTypes['schemas']['repository'];
type Octokit = ReturnType<typeof getOctokit>;
export type GitHubRepo = Awaited<ReturnType<Octokit['rest']['repos']['get']>>['data'];
export interface GitHubActionsRuntimeToken extends JwtPayload {
ac?: string;

View File

@@ -1200,8 +1200,6 @@ __metadata:
"@eslint/compat": "npm:^2.0.0"
"@eslint/eslintrc": "npm:^3.3.3"
"@eslint/js": "npm:^9.39.2"
"@octokit/core": "npm:^7.0.6"
"@octokit/plugin-rest-endpoint-methods": "npm:^17.0.0"
"@sigstore/bundle": "npm:^4.0.0"
"@sigstore/rekor-types": "npm:^4.0.0"
"@sigstore/sign": "npm:^4.1.0"