diff --git a/src/main.ts b/src/main.ts index 538ec08..2b1d201 100644 --- a/src/main.ts +++ b/src/main.ts @@ -50,7 +50,7 @@ actionsToolkit.run( let dockerConfig: ConfigFile | undefined; let dockerConfigMalformed = false; try { - dockerConfig = await Docker.configFile(); + dockerConfig = Docker.configFile(); } catch (e) { dockerConfigMalformed = true; core.warning(`Unable to parse config file ${path.join(Docker.configDir, 'config.json')}: ${e}`); @@ -174,12 +174,13 @@ actionsToolkit.run( } else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) { core.info('Build summary requires Buildx >= 0.13.0'); } else if (builder && builder.driver === 'cloud') { - core.info('Build summary is not yet supported with Docker Build Cloud'); + core.info('Build summary supported for cloud driver!'); + stateHelper.setSummaryType('cloud'); } else if (!ref) { core.info('Build summary requires a build reference'); } else { core.info('Build summary supported!'); - stateHelper.setSummarySupported(); + stateHelper.setSummaryType('buildx'); } }); @@ -189,7 +190,7 @@ actionsToolkit.run( }, // post async () => { - if (stateHelper.isSummarySupported) { + if (stateHelper.summaryType === 'buildx') { await core.group(`Generating build summary`, async () => { try { const recordUploadEnabled = buildRecordUploadEnabled(); @@ -222,6 +223,18 @@ actionsToolkit.run( core.warning(e.message); } }); + } else if (stateHelper.summaryType === 'cloud' && stateHelper.buildRef) { + const [, platform, refId] = stateHelper.buildRef.split('/'); + if (platform && refId) { + const buildUrl = `https://app.docker.com/build/accounts/docker/builds/${platform}/${refId}`; + + core.info(`View build details: ${buildUrl}`); + + const sum = core.summary.addHeading('Docker Build Cloud summary', 2); + sum.addRaw('
').addRaw('Your build was executed using Docker Build Cloud. ').addRaw('You can view detailed build information, logs, and results here: ').addLink(buildUrl, buildUrl).addRaw('
'); + sum.addRaw('').addRaw('For more information about Docker Build Cloud, see ').addLink('the documentation', 'https://docs.docker.com/build/cloud/').addRaw('.').addRaw('
'); + await sum.addSeparator().write(); + } } if (stateHelper.tmpDir.length > 0) { await core.group(`Removing temp folder ${stateHelper.tmpDir}`, async () => { diff --git a/src/state-helper.ts b/src/state-helper.ts index 200771c..d174c4c 100644 --- a/src/state-helper.ts +++ b/src/state-helper.ts @@ -6,7 +6,7 @@ import {Inputs} from './context'; export const tmpDir = process.env['STATE_tmpDir'] || ''; export const buildRef = process.env['STATE_buildRef'] || ''; -export const isSummarySupported = !!process.env['STATE_isSummarySupported']; +export const summaryType = process.env['STATE_summaryType'] || undefined; export const summaryInputs = process.env['STATE_summaryInputs'] ? JSON.parse(process.env['STATE_summaryInputs']) : undefined; export function setTmpDir(tmpDir: string) { @@ -17,8 +17,8 @@ export function setBuildRef(buildRef: string) { core.saveState('buildRef', buildRef); } -export function setSummarySupported() { - core.saveState('isSummarySupported', 'true'); +export function setSummaryType(summaryType: string) { + core.saveState('summaryType', summaryType); } export function setSummaryInputs(inputs: Inputs) {