From bf362ba0dd68e39ab780ceaea6c289bb590a12b1 Mon Sep 17 00:00:00 2001 From: Nikola Jokic Date: Fri, 10 Jun 2022 11:56:10 +0200 Subject: [PATCH] fixed prepare-job for docker to allow for no job container --- packages/docker/src/hooks/prepare-job.ts | 10 ++++++++-- packages/docker/tests/prepare-job-test.ts | 10 ++++++++++ packages/k8s/src/hooks/prepare-job.ts | 24 +++++++++++------------ 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/packages/docker/src/hooks/prepare-job.ts b/packages/docker/src/hooks/prepare-job.ts index 581e6d1..5be7f9d 100644 --- a/packages/docker/src/hooks/prepare-job.ts +++ b/packages/docker/src/hooks/prepare-job.ts @@ -94,7 +94,10 @@ export async function prepareJob( ) } - const isAlpine = await isContainerAlpine(containerMetadata!.id) + let isAlpine = false + if (containerMetadata?.id) { + isAlpine = await isContainerAlpine(containerMetadata.id) + } if (containerMetadata?.id) { containerMetadata.ports = await containerPorts(containerMetadata.id) @@ -105,7 +108,10 @@ export async function prepareJob( } } - const healthChecks: Promise[] = [healthCheck(containerMetadata!)] + const healthChecks: Promise[] = [] + if (containerMetadata) { + healthChecks.push(healthCheck(containerMetadata)) + } for (const service of servicesMetadata) { healthChecks.push(healthCheck(service)) } diff --git a/packages/docker/tests/prepare-job-test.ts b/packages/docker/tests/prepare-job-test.ts index d761b7d..d0d80f6 100644 --- a/packages/docker/tests/prepare-job-test.ts +++ b/packages/docker/tests/prepare-job-test.ts @@ -118,4 +118,14 @@ describe('prepare job', () => { expect(redisServicePorts['80']).toBe('8080') expect(redisServicePorts['8080']).toBe('8088') }) + + it('should run prepare job without job container without exception', async () => { + prepareJobDefinition.args.container = null + const prepareJobOutput = testSetup.createOutputFile( + 'prepare-job-output.json' + ) + await expect( + prepareJob(prepareJobDefinition.args, prepareJobOutput) + ).resolves.not.toThrow() + }) }) diff --git a/packages/k8s/src/hooks/prepare-job.ts b/packages/k8s/src/hooks/prepare-job.ts index 12b24c2..83f769c 100644 --- a/packages/k8s/src/hooks/prepare-job.ts +++ b/packages/k8s/src/hooks/prepare-job.ts @@ -72,22 +72,22 @@ export async function prepareJob( new Set([PodPhase.PENDING]) ) core.debug('Job pod is ready for traffic') - - let isAlpine = false - try { - isAlpine = await isPodContainerAlpine( - createdPod.metadata.name, - JOB_CONTAINER_NAME - ) - } catch (err) { - throw new Error(`Failed to determine if the pod is alpine: ${err}`) - } - core.debug(`Setting isAlpine to ${isAlpine}`) - generateResponseFile(responseFile, createdPod, isAlpine) } catch (err) { await prunePods() throw new Error(`Pod failed to come online with error: ${err}`) } + + let isAlpine = false + try { + isAlpine = await isPodContainerAlpine( + createdPod.metadata.name, + JOB_CONTAINER_NAME + ) + } catch (err) { + throw new Error(`Failed to determine if the pod is alpine: ${err}`) + } + core.debug(`Setting isAlpine to ${isAlpine}`) + generateResponseFile(responseFile, createdPod, isAlpine) } function generateResponseFile(