mirror of
https://github.com/docker/bake-action.git
synced 2026-01-22 12:22:21 +01:00
move summary support check right after build
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
23
.github/workflows/ci.yml
vendored
23
.github/workflows/ci.yml
vendored
@@ -523,7 +523,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
docker image inspect localhost:5000/name/app:latest
|
docker image inspect localhost:5000/name/app:latest
|
||||||
|
|
||||||
disable-summary:
|
summary-disable:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@@ -546,6 +546,27 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DOCKER_BUILD_NO_SUMMARY: true
|
DOCKER_BUILD_NO_SUMMARY: true
|
||||||
|
|
||||||
|
summary-not-supported:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
with:
|
||||||
|
version: v0.12.1
|
||||||
|
driver-opts: |
|
||||||
|
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||||
|
-
|
||||||
|
name: Build
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
files: |
|
||||||
|
./test/config.hcl
|
||||||
|
targets: app
|
||||||
|
|
||||||
export-retention-days:
|
export-retention-days:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
|
|||||||
41
src/main.ts
41
src/main.ts
@@ -13,6 +13,7 @@ import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
|
|||||||
import {Util} from '@docker/actions-toolkit/lib/util';
|
import {Util} from '@docker/actions-toolkit/lib/util';
|
||||||
|
|
||||||
import {BakeDefinition} from '@docker/actions-toolkit/lib/types/buildx/bake';
|
import {BakeDefinition} from '@docker/actions-toolkit/lib/types/buildx/bake';
|
||||||
|
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder';
|
||||||
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker';
|
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker';
|
||||||
|
|
||||||
import * as context from './context';
|
import * as context from './context';
|
||||||
@@ -83,10 +84,10 @@ actionsToolkit.run(
|
|||||||
await toolkit.buildx.printVersion();
|
await toolkit.buildx.printVersion();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let builder: BuilderInfo;
|
||||||
await core.group(`Builder info`, async () => {
|
await core.group(`Builder info`, async () => {
|
||||||
const builder = await toolkit.builder.inspect(inputs.builder);
|
builder = await toolkit.builder.inspect(inputs.builder);
|
||||||
core.info(JSON.stringify(builder, null, 2));
|
core.info(JSON.stringify(builder, null, 2));
|
||||||
stateHelper.setBuilder(builder);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let definition: BakeDefinition | undefined;
|
let definition: BakeDefinition | undefined;
|
||||||
@@ -148,33 +149,45 @@ actionsToolkit.run(
|
|||||||
core.setOutput('metadata', metadatadt);
|
core.setOutput('metadata', metadatadt);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let refs: Array<string> = [];
|
||||||
await core.group(`Build references`, async () => {
|
await core.group(`Build references`, async () => {
|
||||||
const refs = await buildRefs(toolkit, startedTime, inputs.builder);
|
refs = await buildRefs(toolkit, startedTime, inputs.builder);
|
||||||
if (refs) {
|
if (refs.length > 0) {
|
||||||
for (const ref of refs) {
|
for (const ref of refs) {
|
||||||
core.info(ref);
|
core.info(ref);
|
||||||
}
|
}
|
||||||
stateHelper.setBuildRefs(refs);
|
stateHelper.setBuildRefs(refs);
|
||||||
} else {
|
} else {
|
||||||
core.warning('No build refs found');
|
core.info('No build references found');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await core.group(`Check build summary support`, async () => {
|
||||||
|
if (process.env.DOCKER_BUILD_NO_SUMMARY && Util.parseBool(process.env.DOCKER_BUILD_NO_SUMMARY)) {
|
||||||
|
core.info('Build summary disabled');
|
||||||
|
} else if (GitHub.isGHES) {
|
||||||
|
core.warning('Build summary is not yet supported on GHES');
|
||||||
|
} else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) {
|
||||||
|
core.warning('Build summary requires Buildx >= 0.13.0');
|
||||||
|
} else if (builder && builder.driver === 'cloud') {
|
||||||
|
core.warning('Build summary is not yet supported with Docker Build Cloud');
|
||||||
|
} else if (refs.length == 0) {
|
||||||
|
core.warning('Build summary requires at least one build reference');
|
||||||
|
} else {
|
||||||
|
core.info('Build summary supported!');
|
||||||
|
stateHelper.setSummarySupported();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// post
|
// post
|
||||||
async () => {
|
async () => {
|
||||||
if (stateHelper.buildRefs.length > 0) {
|
if (stateHelper.isSummarySupported) {
|
||||||
await core.group(`Generating build summary`, async () => {
|
await core.group(`Generating build summary`, async () => {
|
||||||
if (process.env.DOCKER_BUILD_NO_SUMMARY && Util.parseBool(process.env.DOCKER_BUILD_NO_SUMMARY)) {
|
|
||||||
core.info('Summary disabled');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (stateHelper.builder && stateHelper.builder.driver === 'cloud') {
|
|
||||||
core.info('Summary is not yet supported with Docker Build Cloud');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
const exportRetentionDays = buildExportRetentionDays();
|
const exportRetentionDays = buildExportRetentionDays();
|
||||||
const buildxHistory = new BuildxHistory();
|
const buildxHistory = new BuildxHistory();
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
import {BakeDefinition} from '@docker/actions-toolkit/lib/types/buildx/bake';
|
import {BakeDefinition} from '@docker/actions-toolkit/lib/types/buildx/bake';
|
||||||
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder';
|
|
||||||
|
|
||||||
import {Inputs, sanitizeInputs} from './context';
|
import {Inputs, sanitizeInputs} from './context';
|
||||||
|
|
||||||
export const tmpDir = process.env['STATE_tmpDir'] || '';
|
export const tmpDir = process.env['STATE_tmpDir'] || '';
|
||||||
export const inputs = process.env['STATE_inputs'] ? JSON.parse(process.env['STATE_inputs']) : undefined;
|
export const inputs = process.env['STATE_inputs'] ? JSON.parse(process.env['STATE_inputs']) : undefined;
|
||||||
export const builder = process.env['STATE_builder'] ? <BuilderInfo>JSON.parse(process.env['STATE_builder']) : undefined;
|
|
||||||
export const bakeDefinition = process.env['STATE_bakeDefinition'] ? <BakeDefinition>JSON.parse(process.env['STATE_bakeDefinition']) : undefined;
|
export const bakeDefinition = process.env['STATE_bakeDefinition'] ? <BakeDefinition>JSON.parse(process.env['STATE_bakeDefinition']) : undefined;
|
||||||
export const buildRefs = process.env['STATE_buildRefs'] ? process.env['STATE_buildRefs'].split(',') : [];
|
export const buildRefs = process.env['STATE_buildRefs'] ? process.env['STATE_buildRefs'].split(',') : [];
|
||||||
|
export const isSummarySupported = !!process.env['STATE_isSummarySupported'];
|
||||||
|
|
||||||
export function setTmpDir(tmpDir: string) {
|
export function setTmpDir(tmpDir: string) {
|
||||||
core.saveState('tmpDir', tmpDir);
|
core.saveState('tmpDir', tmpDir);
|
||||||
@@ -19,10 +18,6 @@ export function setInputs(inputs: Inputs) {
|
|||||||
core.saveState('inputs', JSON.stringify(sanitizeInputs(inputs)));
|
core.saveState('inputs', JSON.stringify(sanitizeInputs(inputs)));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setBuilder(builder: BuilderInfo) {
|
|
||||||
core.saveState('builder', JSON.stringify(builder));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setBakeDefinition(bakeDefinition: BakeDefinition) {
|
export function setBakeDefinition(bakeDefinition: BakeDefinition) {
|
||||||
core.saveState('bakeDefinition', JSON.stringify(bakeDefinition));
|
core.saveState('bakeDefinition', JSON.stringify(bakeDefinition));
|
||||||
}
|
}
|
||||||
@@ -30,3 +25,7 @@ export function setBakeDefinition(bakeDefinition: BakeDefinition) {
|
|||||||
export function setBuildRefs(buildRefs: Array<string>) {
|
export function setBuildRefs(buildRefs: Array<string>) {
|
||||||
core.saveState('buildRefs', buildRefs.join(','));
|
core.saveState('buildRefs', buildRefs.join(','));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setSummarySupported() {
|
||||||
|
core.saveState('isSummarySupported', 'true');
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user