mirror of
https://github.com/docker/metadata-action.git
synced 2026-04-09 17:28:20 +01:00
Compare commits
8 Commits
6b695f7a8a
...
v6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
030e881283 | ||
|
|
4b529ac4e5 | ||
|
|
b0082b33bc | ||
|
|
7b19fec715 | ||
|
|
281c9b0599 | ||
|
|
5f43b3b4f4 | ||
|
|
9d53276575 | ||
|
|
eaa3d3973e |
@@ -79,6 +79,67 @@ describe('getInputs', () => {
|
||||
tags: [],
|
||||
}
|
||||
],
|
||||
[
|
||||
3,
|
||||
new Map<string, string>([
|
||||
['labels', 'mylabel=foo#bar\n#comment\nanother=bar'],
|
||||
]),
|
||||
{
|
||||
context: context.ContextSource.workflow,
|
||||
bakeTarget: 'docker-metadata-action',
|
||||
flavor: [],
|
||||
githubToken: '',
|
||||
images: [],
|
||||
labels: ['mylabel=foo#bar', 'another=bar'],
|
||||
annotations: [],
|
||||
sepLabels: '\n',
|
||||
sepTags: '\n',
|
||||
sepAnnotations: '\n',
|
||||
tags: [],
|
||||
}
|
||||
],
|
||||
[
|
||||
4,
|
||||
new Map<string, string>([
|
||||
['annotations', 'org.opencontainers.image.url=https://example.com/path#readme\n#comment\norg.opencontainers.image.source=https://github.com/docker/metadata-action'],
|
||||
]),
|
||||
{
|
||||
context: context.ContextSource.workflow,
|
||||
bakeTarget: 'docker-metadata-action',
|
||||
flavor: [],
|
||||
githubToken: '',
|
||||
images: [],
|
||||
labels: [],
|
||||
annotations: [
|
||||
'org.opencontainers.image.url=https://example.com/path#readme',
|
||||
'org.opencontainers.image.source=https://github.com/docker/metadata-action'
|
||||
],
|
||||
sepLabels: '\n',
|
||||
sepTags: '\n',
|
||||
sepAnnotations: '\n',
|
||||
tags: [],
|
||||
}
|
||||
],
|
||||
[
|
||||
5,
|
||||
new Map<string, string>([
|
||||
['tags', 'type=raw,value=foo#bar\n#comment'],
|
||||
['flavor', 'prefix=v#1\n#comment'],
|
||||
]),
|
||||
{
|
||||
context: context.ContextSource.workflow,
|
||||
bakeTarget: 'docker-metadata-action',
|
||||
flavor: ['prefix=v#1'],
|
||||
githubToken: '',
|
||||
images: [],
|
||||
labels: [],
|
||||
annotations: [],
|
||||
sepLabels: '\n',
|
||||
sepTags: '\n',
|
||||
sepAnnotations: '\n',
|
||||
tags: ['type=raw,value=foo#bar'],
|
||||
}
|
||||
],
|
||||
];
|
||||
test.each(cases)('[%d] given %o as inputs, returns %o', async (num: number, inputs: Map<string, string>, expected: context.Inputs) => {
|
||||
inputs.forEach((value: string, name: string) => {
|
||||
|
||||
@@ -3,9 +3,9 @@ import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as dotenv from 'dotenv';
|
||||
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github/github.js';
|
||||
|
||||
import {ContextSource, getContext, getInputs, Inputs} from '../src/context.js';
|
||||
import type {Context as MetadataContext} from '../src/context.js';
|
||||
|
||||
@@ -1,32 +1,11 @@
|
||||
import fs from 'node:fs';
|
||||
import {createRequire} from 'node:module';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import {vi} from 'vitest';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-metadata-action-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/metadata-action',
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
type RequireCacheEntry = NonNullable<(typeof require.cache)[string]>;
|
||||
|
||||
const githubMock = {
|
||||
context: {
|
||||
repo: {
|
||||
owner: 'docker',
|
||||
repo: 'actions-toolkit'
|
||||
},
|
||||
ref: 'refs/heads/dev',
|
||||
sha: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
runId: 2188748038,
|
||||
runNumber: 15,
|
||||
payload: {
|
||||
const githubPayload = {
|
||||
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
base_ref: null,
|
||||
before: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
@@ -43,11 +22,11 @@ const githubMock = {
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
id: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
timestamp: '2024-11-13T13:42:28Z',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
url: 'https://github.com/docker/test-docker-action/commit/5f3331d7f7044c18ca9f12c77d961c4d7cf3276a'
|
||||
}
|
||||
],
|
||||
compare: 'https://github.com/docker/test-docker-action/compare/5f3331d7f704...860c1904a1ce',
|
||||
@@ -66,11 +45,11 @@ const githubMock = {
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
id: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
timestamp: '2024-11-13T13:42:28Z',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
url: 'https://github.com/docker/test-docker-action/commit/5f3331d7f7044c18ca9f12c77d961c4d7cf3276a'
|
||||
},
|
||||
organization: {
|
||||
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
|
||||
@@ -220,12 +199,26 @@ const githubMock = {
|
||||
type: 'User',
|
||||
url: 'https://api.github.com/users/crazy-max'
|
||||
}
|
||||
}
|
||||
},
|
||||
getOctokit: () => ({
|
||||
rest: {
|
||||
repos: {
|
||||
getCommit: async () => ({
|
||||
};
|
||||
|
||||
const githubEventPath = path.join(tmpDir, 'github-event.json');
|
||||
fs.writeFileSync(githubEventPath, JSON.stringify(githubPayload));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/metadata-action',
|
||||
GITHUB_REF: 'refs/heads/dev',
|
||||
GITHUB_RUN_ID: '2188748038',
|
||||
GITHUB_RUN_ATTEMPT: '1',
|
||||
GITHUB_RUN_NUMBER: '15',
|
||||
GITHUB_SHA: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
GITHUB_EVENT_PATH: githubEventPath,
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
|
||||
const getCommitMock = vi.hoisted(() =>
|
||||
vi.fn(async () => ({
|
||||
data: {
|
||||
commit: {
|
||||
committer: {
|
||||
@@ -233,27 +226,27 @@ const githubMock = {
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}))
|
||||
);
|
||||
|
||||
const getOctokitMock = vi.hoisted(() =>
|
||||
vi.fn(() => ({
|
||||
rest: {
|
||||
repos: {
|
||||
getCommit: getCommitMock
|
||||
}
|
||||
}
|
||||
})
|
||||
}))
|
||||
);
|
||||
|
||||
vi.mock('@actions/github', async importOriginal => {
|
||||
const actual = await importOriginal<typeof import('@actions/github')>();
|
||||
return {
|
||||
...actual,
|
||||
context: {
|
||||
...actual.context,
|
||||
payload: githubPayload
|
||||
},
|
||||
getOctokit: getOctokitMock
|
||||
};
|
||||
|
||||
vi.mock('@actions/github', () => githubMock);
|
||||
|
||||
for (const mod of ['@actions/github', '@docker/actions-toolkit/node_modules/@actions/github']) {
|
||||
try {
|
||||
const resolved = require.resolve(mod);
|
||||
vi.doMock(resolved, () => githubMock);
|
||||
require.cache[resolved] = {
|
||||
id: resolved,
|
||||
filename: resolved,
|
||||
loaded: true,
|
||||
exports: githubMock,
|
||||
children: [],
|
||||
paths: []
|
||||
} as RequireCacheEntry;
|
||||
} catch {
|
||||
// Ignore unresolved optional paths; vi.mock handles module-level mocking.
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
145
dist/index.js
generated
vendored
145
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -26,7 +26,7 @@
|
||||
"dependencies": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/github": "^9.0.0",
|
||||
"@docker/actions-toolkit": "^0.68.0",
|
||||
"@docker/actions-toolkit": "^0.79.0",
|
||||
"@renovate/pep440": "^1.0.0",
|
||||
"csv-parse": "^6.1.0",
|
||||
"handlebars": "^4.7.8",
|
||||
|
||||
@@ -2,7 +2,7 @@ import * as core from '@actions/core';
|
||||
|
||||
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||
import {Git} from '@docker/actions-toolkit/lib/git.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
|
||||
type GithubContext = typeof GitHub.context;
|
||||
@@ -28,11 +28,11 @@ export interface Inputs {
|
||||
export function getInputs(): Inputs {
|
||||
return {
|
||||
context: (core.getInput('context') || ContextSource.workflow) as ContextSource,
|
||||
images: Util.getInputList('images', {ignoreComma: true, comment: '#'}),
|
||||
tags: Util.getInputList('tags', {ignoreComma: true, comment: '#'}),
|
||||
flavor: Util.getInputList('flavor', {ignoreComma: true, comment: '#'}),
|
||||
labels: Util.getInputList('labels', {ignoreComma: true, comment: '#'}),
|
||||
annotations: Util.getInputList('annotations', {ignoreComma: true, comment: '#'}),
|
||||
images: Util.getInputList('images', {ignoreComma: true, comment: '#', commentNoInfix: true}),
|
||||
tags: Util.getInputList('tags', {ignoreComma: true, comment: '#', commentNoInfix: true}),
|
||||
flavor: Util.getInputList('flavor', {ignoreComma: true, comment: '#', commentNoInfix: true}),
|
||||
labels: Util.getInputList('labels', {ignoreComma: true, comment: '#', commentNoInfix: true}),
|
||||
annotations: Util.getInputList('annotations', {ignoreComma: true, comment: '#', commentNoInfix: true}),
|
||||
sepTags: core.getInput('sep-tags', {trimWhitespace: false}) || `\n`,
|
||||
sepLabels: core.getInput('sep-labels', {trimWhitespace: false}) || `\n`,
|
||||
sepAnnotations: core.getInput('sep-annotations', {trimWhitespace: false}) || `\n`,
|
||||
|
||||
@@ -6,7 +6,7 @@ import * as pep440 from '@renovate/pep440';
|
||||
import * as semver from 'semver';
|
||||
import * as core from '@actions/core';
|
||||
import {Context as ToolkitContext} from '@docker/actions-toolkit/lib/context.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github/github.js';
|
||||
|
||||
import {Inputs, Context} from './context.js';
|
||||
import * as icl from './image.js';
|
||||
|
||||
Reference in New Issue
Block a user