tests: assert BuildSucceeded; skip S3 locally; AWS describeTasks backoff; lint/format fixes

This commit is contained in:
Frostebite
2025-09-03 20:49:52 +01:00
parent eb8b92cda1
commit c8f881a385
6 changed files with 67 additions and 65 deletions

33
dist/index.js generated vendored
View File

@@ -1954,7 +1954,11 @@ class AWSTaskRunner {
while (exitCode === undefined) {
await new Promise((resolve) => resolve(10000));
taskData = await AWSTaskRunner.describeTasks(cluster, taskArn);
containerState = taskData.containers?.[0];
const containers = taskData?.containers;
if (!containers || containers.length === 0) {
continue;
}
containerState = containers[0];
exitCode = containerState?.exitCode;
}
cloud_runner_logger_1.default.log(`Container State: ${JSON.stringify(containerState, undefined, 4)}`);
@@ -1981,18 +1985,31 @@ class AWSTaskRunner {
catch (error_) {
const error = error_;
await new Promise((resolve) => setTimeout(resolve, 3000));
cloud_runner_logger_1.default.log(`Cloud runner job has ended ${(await AWSTaskRunner.describeTasks(cluster, taskArn)).containers?.[0].lastStatus}`);
const taskAfterError = await AWSTaskRunner.describeTasks(cluster, taskArn);
cloud_runner_logger_1.default.log(`Cloud runner job has ended ${taskAfterError?.containers?.[0]?.lastStatus}`);
core.setFailed(error);
core.error(error);
}
}
static async describeTasks(clusterName, taskArn) {
const tasks = await AWSTaskRunner.ECS.send(new client_ecs_1.DescribeTasksCommand({ cluster: clusterName, tasks: [taskArn] }));
if (tasks.tasks?.[0]) {
return tasks.tasks?.[0];
}
else {
throw new Error('No task found');
const maxAttempts = 6;
let delayMs = 500;
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
const tasks = await AWSTaskRunner.ECS.send(new client_ecs_1.DescribeTasksCommand({ cluster: clusterName, tasks: [taskArn] }));
if (tasks.tasks?.[0]) {
return tasks.tasks?.[0];
}
throw new Error('No task found');
}
catch (error) {
const isThrottle = error?.name === 'ThrottlingException' || /rate exceeded/i.test(String(error?.message));
if (!isThrottle || attempt === maxAttempts) {
throw error;
}
await new Promise((r) => setTimeout(r, delayMs));
delayMs *= 2;
}
}
}
static async streamLogsUntilTaskStops(clusterName, taskArn, kinesisStreamName) {

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long