mirror of
https://github.com/docker/build-push-action.git
synced 2026-03-27 08:27:01 +00:00
Merge pull request #128 from useblacksmith/fix/export-timeout
fix: add timeout to buildx export operation
This commit is contained in:
commit
4af38cd115
2
dist/index.js
generated
vendored
2
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
25
src/main.ts
25
src/main.ts
@ -248,9 +248,30 @@ actionsToolkit.run(
|
||||
let exportRes;
|
||||
if (!buildError) {
|
||||
const buildxHistory = new BuildxHistory();
|
||||
exportRes = await buildxHistory.export({
|
||||
refs: ref ? [ref] : []
|
||||
|
||||
// Create a timeout promise that rejects after 30 seconds
|
||||
let timeoutId: NodeJS.Timeout | undefined;
|
||||
const exportTimeout = new Promise<never>((_, reject) => {
|
||||
timeoutId = setTimeout(() => reject(new Error('Export operation timed out after 30 seconds')), 30000);
|
||||
});
|
||||
|
||||
try {
|
||||
// Race between the export operation and the timeout
|
||||
exportRes = await Promise.race([
|
||||
buildxHistory.export({
|
||||
refs: ref ? [ref] : []
|
||||
}),
|
||||
exportTimeout
|
||||
]);
|
||||
// Clear the timeout if export completes successfully
|
||||
if (timeoutId) clearTimeout(timeoutId);
|
||||
} catch (exportError) {
|
||||
// Clear the timeout on error as well
|
||||
if (timeoutId) clearTimeout(timeoutId);
|
||||
// Log the error but continue with reporting
|
||||
core.warning(`Build export failed: ${(exportError as Error).message}`);
|
||||
core.info('Continuing with build reporting without export data');
|
||||
}
|
||||
}
|
||||
|
||||
if (buildId && isBlacksmithBuilder) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user