Skip to content

Commit a29d7e9

Browse files
committed
generate build summary
Signed-off-by: CrazyMax <[email protected]>
1 parent f40a782 commit a29d7e9

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

Diff for: src/context.ts

+22
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,28 @@ export async function getInputs(): Promise<Inputs> {
4444
};
4545
}
4646

47+
export function sanitizeInputs(inputs: Inputs) {
48+
const res = {};
49+
for (const key of Object.keys(inputs)) {
50+
if (key === 'github-token') {
51+
continue;
52+
}
53+
const value: string | string[] | boolean = inputs[key];
54+
if (typeof value === 'boolean' && value === false) {
55+
continue;
56+
} else if (Array.isArray(value) && value.length === 0) {
57+
continue;
58+
} else if (!value) {
59+
continue;
60+
}
61+
if (key === 'workdir' && value === '.') {
62+
continue;
63+
}
64+
res[key] = value;
65+
}
66+
return res;
67+
}
68+
4769
export async function getArgs(inputs: Inputs, definition: BakeDefinition, toolkit: Toolkit): Promise<Array<string>> {
4870
// prettier-ignore
4971
return [

Diff for: src/main.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ actionsToolkit.run(
2525

2626
const inputs: context.Inputs = await context.getInputs();
2727
core.debug(`inputs: ${JSON.stringify(inputs)}`);
28+
stateHelper.setInputs(inputs);
2829

2930
const toolkit = new Toolkit();
3031
const gitAuthToken = process.env.BUILDX_BAKE_GIT_AUTH_TOKEN ?? inputs['github-token'];
@@ -110,6 +111,7 @@ actionsToolkit.run(
110111
if (!definition) {
111112
throw new Error('Bake definition not set');
112113
}
114+
stateHelper.setBakeDefinition(definition);
113115

114116
const args: string[] = await context.getArgs(inputs, definition, toolkit);
115117
const buildCmd = await toolkit.buildx.getCommand(args);
@@ -170,11 +172,17 @@ actionsToolkit.run(
170172
refs: stateHelper.buildRefs
171173
});
172174
core.info(`Build records exported to ${exportRes.dockerbuildFilename} (${Util.formatFileSize(exportRes.dockerbuildSize)})`);
173-
await GitHub.uploadArtifact({
175+
const uploadRes = await GitHub.uploadArtifact({
174176
filename: exportRes.dockerbuildFilename,
175177
mimeType: 'application/gzip',
176178
retentionDays: 90
177179
});
180+
await GitHub.writeBuildSummary({
181+
exportRes: exportRes,
182+
uploadRes: uploadRes,
183+
inputs: stateHelper.inputs,
184+
bakeDefinition: stateHelper.bakeDefinition
185+
});
178186
} catch (e) {
179187
core.warning(e.message);
180188
}

Diff for: src/state-helper.ts

+14
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
import * as core from '@actions/core';
22

3+
import {BakeDefinition} from '@docker/actions-toolkit/lib/types/buildx/bake';
4+
5+
import {Inputs, sanitizeInputs} from './context';
6+
37
export const tmpDir = process.env['STATE_tmpDir'] || '';
8+
export const inputs = process.env['STATE_inputs'] ? JSON.parse(process.env['STATE_inputs']) : undefined;
9+
export const bakeDefinition = process.env['STATE_bakeDefinition'] ? <BakeDefinition>JSON.parse(process.env['STATE_bakeDefinition']) : undefined;
410
export const buildRefs = process.env['STATE_buildRefs'] ? process.env['STATE_buildRefs'].split(',') : [];
511

612
export function setTmpDir(tmpDir: string) {
713
core.saveState('tmpDir', tmpDir);
814
}
915

16+
export function setInputs(inputs: Inputs) {
17+
core.saveState('inputs', JSON.stringify(sanitizeInputs(inputs)));
18+
}
19+
20+
export function setBakeDefinition(bakeDefinition: BakeDefinition) {
21+
core.saveState('bakeDefinition', JSON.stringify(bakeDefinition));
22+
}
23+
1024
export function setBuildRefs(buildRefs: Array<string>) {
1125
core.saveState('buildRefs', buildRefs.join(','));
1226
}

0 commit comments

Comments
 (0)