Manual 'in_progress' cull, stupid wait

This commit is contained in:
Michael J Mulligan 2021-04-07 00:28:08 +01:00
parent 1b940a31d5
commit 34b867b38a
3 changed files with 55 additions and 48 deletions

View file

@ -6842,25 +6842,27 @@ function resolveCheckRunId() {
try { try {
core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`); core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`);
const octokit = github.getOctokit(core.getInput(`github-token`, { required: true })); const octokit = github.getOctokit(core.getInput(`github-token`, { required: true }));
const { data: workflowResponse } = yield octokit.actions let workflowJobs = (yield octokit.actions
.listJobsForWorkflowRun(Object.assign(Object.assign({}, ctx.repo), { run_id: ctx.runId, status: "in_progress" })) .listJobsForWorkflowRun(Object.assign(Object.assign({}, ctx.repo), { run_id: ctx.runId }))
.catch((e) => { .catch((e) => {
throw `Unable to fetch Workflow Job List: ${e}`; throw `Unable to fetch Workflow Job List: ${e}`;
}); })).data.jobs.filter((job) => job.status === `in_progress`);
if (workflowResponse.jobs.length > 0) { if (workflowJobs.length > 0) {
core.info(`resolveCheckRunId() Found ${workflowResponse.jobs.length} Jobs:\n` + util_1.inspect(workflowResponse.jobs)); core.info(`resolveCheckRunId() Found ${workflowJobs.length} Jobs:\n` + util_1.inspect(workflowJobs));
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchRegExp = new RegExp(`/^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)/`); const searchRegExp = new RegExp(`^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)`);
const jobs = workflowResponse.jobs.filter((run) => searchRegExp.test(run.name)); const jobs = workflowJobs.filter((job) => searchRegExp.test(job.name));
core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`); core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`);
workflowResponse.jobs = jobs.length ? jobs : workflowResponse.jobs; workflowJobs = jobs.length ? jobs : workflowJobs;
} }
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchToken = uuid_1.v4(); const searchToken = uuid_1.v4();
core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`); core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`);
const startedAt = Date.now();
// Sleep for MS, to allow Annotation to be captured and populated // Sleep for MS, to allow Annotation to be captured and populated
yield ((ms) => new Promise((resolve) => setTimeout(resolve, ms)))(5 * 1000); yield ((ms) => new Promise((resolve) => setTimeout(resolve, ms)))(10 * 1000);
for (const job of workflowResponse.jobs) { core.info(`Slept for ${Date.now() - startedAt}ms`);
for (const job of workflowJobs) {
try { try {
const { data: annotations } = yield octokit.checks.listAnnotations(Object.assign(Object.assign({}, ctx.repo), { check_run_id: job.id })); const { data: annotations } = yield octokit.checks.listAnnotations(Object.assign(Object.assign({}, ctx.repo), { check_run_id: job.id }));
core.info(`resolveCheckRunId() Found ${annotations.length} Annotations for Job '${job.id}':\n` + util_1.inspect(annotations)); core.info(`resolveCheckRunId() Found ${annotations.length} Annotations for Job '${job.id}':\n` + util_1.inspect(annotations));
@ -6879,8 +6881,8 @@ function resolveCheckRunId() {
} }
core.info(`resolveCheckRunId() Finished looking for Search Token`); core.info(`resolveCheckRunId() Finished looking for Search Token`);
} }
else if (workflowResponse.jobs[0]) { else if (workflowJobs[0]) {
jobId = workflowResponse.jobs[0].id; jobId = workflowJobs[0].id;
} }
else { else {
throw `Unable to resolve GitHub Job`; throw `Unable to resolve GitHub Job`;

30
dist/run/index.js vendored
View file

@ -6852,25 +6852,27 @@ function resolveCheckRunId() {
try { try {
core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`); core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`);
const octokit = github.getOctokit(core.getInput(`github-token`, { required: true })); const octokit = github.getOctokit(core.getInput(`github-token`, { required: true }));
const { data: workflowResponse } = yield octokit.actions let workflowJobs = (yield octokit.actions
.listJobsForWorkflowRun(Object.assign(Object.assign({}, ctx.repo), { run_id: ctx.runId, status: "in_progress" })) .listJobsForWorkflowRun(Object.assign(Object.assign({}, ctx.repo), { run_id: ctx.runId }))
.catch((e) => { .catch((e) => {
throw `Unable to fetch Workflow Job List: ${e}`; throw `Unable to fetch Workflow Job List: ${e}`;
}); })).data.jobs.filter((job) => job.status === `in_progress`);
if (workflowResponse.jobs.length > 0) { if (workflowJobs.length > 0) {
core.info(`resolveCheckRunId() Found ${workflowResponse.jobs.length} Jobs:\n` + util_1.inspect(workflowResponse.jobs)); core.info(`resolveCheckRunId() Found ${workflowJobs.length} Jobs:\n` + util_1.inspect(workflowJobs));
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchRegExp = new RegExp(`/^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)/`); const searchRegExp = new RegExp(`^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)`);
const jobs = workflowResponse.jobs.filter((run) => searchRegExp.test(run.name)); const jobs = workflowJobs.filter((job) => searchRegExp.test(job.name));
core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`); core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`);
workflowResponse.jobs = jobs.length ? jobs : workflowResponse.jobs; workflowJobs = jobs.length ? jobs : workflowJobs;
} }
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchToken = uuid_1.v4(); const searchToken = uuid_1.v4();
core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`); core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`);
const startedAt = Date.now();
// Sleep for MS, to allow Annotation to be captured and populated // Sleep for MS, to allow Annotation to be captured and populated
yield ((ms) => new Promise((resolve) => setTimeout(resolve, ms)))(5 * 1000); yield ((ms) => new Promise((resolve) => setTimeout(resolve, ms)))(10 * 1000);
for (const job of workflowResponse.jobs) { core.info(`Slept for ${Date.now() - startedAt}ms`);
for (const job of workflowJobs) {
try { try {
const { data: annotations } = yield octokit.checks.listAnnotations(Object.assign(Object.assign({}, ctx.repo), { check_run_id: job.id })); const { data: annotations } = yield octokit.checks.listAnnotations(Object.assign(Object.assign({}, ctx.repo), { check_run_id: job.id }));
core.info(`resolveCheckRunId() Found ${annotations.length} Annotations for Job '${job.id}':\n` + util_1.inspect(annotations)); core.info(`resolveCheckRunId() Found ${annotations.length} Annotations for Job '${job.id}':\n` + util_1.inspect(annotations));
@ -6889,8 +6891,8 @@ function resolveCheckRunId() {
} }
core.info(`resolveCheckRunId() Finished looking for Search Token`); core.info(`resolveCheckRunId() Finished looking for Search Token`);
} }
else if (workflowResponse.jobs[0]) { else if (workflowJobs[0]) {
jobId = workflowResponse.jobs[0].id; jobId = workflowJobs[0].id;
} }
else { else {
throw `Unable to resolve GitHub Job`; throw `Unable to resolve GitHub Job`;

View file

@ -247,30 +247,33 @@ async function resolveCheckRunId(): Promise<number> {
try { try {
core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`) core.info(`Attempting to resolve current GitHub Job (${ctx.runId})`)
const octokit = github.getOctokit(core.getInput(`github-token`, { required: true })) const octokit = github.getOctokit(core.getInput(`github-token`, { required: true }))
const { data: workflowResponse } = await octokit.actions let workflowJobs = (
.listJobsForWorkflowRun({ await octokit.actions
...ctx.repo, .listJobsForWorkflowRun({
run_id: ctx.runId, ...ctx.repo,
status: "in_progress", run_id: ctx.runId,
}) })
.catch((e: string) => { .catch((e: string) => {
throw `Unable to fetch Workflow Job List: ${e}` throw `Unable to fetch Workflow Job List: ${e}`
}) })
).data.jobs.filter((job) => job.status === `in_progress`)
if (workflowResponse.jobs.length > 0) { if (workflowJobs.length > 0) {
core.info(`resolveCheckRunId() Found ${workflowResponse.jobs.length} Jobs:\n` + inspect(workflowResponse.jobs)) core.info(`resolveCheckRunId() Found ${workflowJobs.length} Jobs:\n` + inspect(workflowJobs))
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchRegExp = new RegExp(`/^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)/`) const searchRegExp = new RegExp(`^` + ctx.job.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + `(\\s+\\(|$)`)
const jobs = workflowResponse.jobs.filter((run) => searchRegExp.test(run.name)) const jobs = workflowJobs.filter((job) => searchRegExp.test(job.name))
core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`) core.info(`resolveCheckRunId() Found ${jobs.length} Jobs whose base name is '${ctx.job}'`)
workflowResponse.jobs = jobs.length ? jobs : workflowResponse.jobs workflowJobs = jobs.length ? jobs : workflowJobs
} }
if (workflowResponse.jobs.length > 1) { if (workflowJobs.length > 1) {
const searchToken = uuidv4() const searchToken = uuidv4()
core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`) core.info(`::warning::[ignore] Resolving GitHub Job with Search Token: ${searchToken}`)
const startedAt = Date.now()
// Sleep for MS, to allow Annotation to be captured and populated // Sleep for MS, to allow Annotation to be captured and populated
await ((ms): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms)))(5 * 1000) await ((ms): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms)))(10 * 1000)
for (const job of workflowResponse.jobs) { core.info(`Slept for ${Date.now() - startedAt}ms`)
for (const job of workflowJobs) {
try { try {
const { data: annotations } = await octokit.checks.listAnnotations({ const { data: annotations } = await octokit.checks.listAnnotations({
...ctx.repo, ...ctx.repo,
@ -294,8 +297,8 @@ async function resolveCheckRunId(): Promise<number> {
} }
} }
core.info(`resolveCheckRunId() Finished looking for Search Token`) core.info(`resolveCheckRunId() Finished looking for Search Token`)
} else if (workflowResponse.jobs[0]) { } else if (workflowJobs[0]) {
jobId = workflowResponse.jobs[0].id jobId = workflowJobs[0].id
} else { } else {
throw `Unable to resolve GitHub Job` throw `Unable to resolve GitHub Job`
} }