pull/235/head
mdugdale 2021-04-07 20:45:21 +01:00
parent 64c8d755f8
commit 770f4d539e
1 changed files with 12 additions and 4 deletions

View File

@ -1,5 +1,5 @@
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import { customAlphabet } from 'nanoid'; import { customAlphabet, nanoid } from 'nanoid';
import * as fs from 'fs'; import * as fs from 'fs';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as zlib from 'zlib'; import * as zlib from 'zlib';
@ -325,6 +325,10 @@ class AWS {
workingdir, workingdir,
secrets, secrets,
) { ) {
const logid = customAlphabet(alphabet, 9);
commands[1] += `
echo "${logid}"
`;
const taskDefStackName = `${stackName}-${buildUid}`; const taskDefStackName = `${stackName}-${buildUid}`;
const taskDefCloudFormation = fs.readFileSync(`${__dirname}/task-def-formation.yml`, 'utf8'); const taskDefCloudFormation = fs.readFileSync(`${__dirname}/task-def-formation.yml`, 'utf8');
await CF.createStack({ await CF.createStack({
@ -472,7 +476,7 @@ class AWS {
core.error(error); core.error(error);
} }
core.info(`Task is running on worker cluster`); core.info(`Task is running on worker cluster`);
await this.streamLogsUntilTaskStops(ECS, CF, taskDef, cluster, taskArn, streamName); await this.streamLogsUntilTaskStops(ECS, CF, taskDef, cluster, taskArn, streamName, logid);
await ECS.waitFor('tasksStopped', { cluster, tasks: [taskArn] }).promise(); await ECS.waitFor('tasksStopped', { cluster, tasks: [taskArn] }).promise();
const exitCode = ( const exitCode = (
await ECS.describeTasks({ await ECS.describeTasks({
@ -493,7 +497,7 @@ class AWS {
} }
} }
static async streamLogsUntilTaskStops(ECS, CF, taskDef, clusterName, taskArn, kinesisStreamName) { static async streamLogsUntilTaskStops(ECS, CF, taskDef, clusterName, taskArn, kinesisStreamName, logid) {
// watching logs // watching logs
const kinesis = new SDK.Kinesis(); const kinesis = new SDK.Kinesis();
@ -534,7 +538,8 @@ class AWS {
await new Promise((resolve) => setTimeout(resolve, 1500)); await new Promise((resolve) => setTimeout(resolve, 1500));
if ((await getTaskStatus()) !== 'RUNNING') { if ((await getTaskStatus()) !== 'RUNNING') {
readingLogs = false; readingLogs = false;
await new Promise((resolve) => setTimeout(resolve, 35000)); core.info('Task status is not RUNNING waiting 45 seconds for end of logs.');
await new Promise((resolve) => setTimeout(resolve, 45000));
} }
const records = await kinesis const records = await kinesis
.getRecords({ .getRecords({
@ -550,6 +555,9 @@ class AWS {
if (json.messageType === 'DATA_MESSAGE') { if (json.messageType === 'DATA_MESSAGE') {
for (let logEventsIndex = 0; logEventsIndex < json.logEvents.length; logEventsIndex++) { for (let logEventsIndex = 0; logEventsIndex < json.logEvents.length; logEventsIndex++) {
core.info(json.logEvents[logEventsIndex].message); core.info(json.logEvents[logEventsIndex].message);
if (json.logEvents[logEventsIndex].message.includes(logid)) {
readingLogs = false;
}
} }
} }
} }