mirror of
https://github.com/actions/runner-container-hooks.git
synced 2025-12-15 09:16:44 +00:00
Try to get response body message and log entire error response in debug mode (#123)
This commit is contained in:
@@ -79,7 +79,9 @@ export async function prepareJob(
|
|||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
await prunePods()
|
await prunePods()
|
||||||
throw new Error(`failed to create job pod: ${err}`)
|
core.debug(`createPod failed: ${JSON.stringify(err)}`)
|
||||||
|
const message = (err as any)?.response?.body?.message || err
|
||||||
|
throw new Error(`failed to create job pod: ${message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!createdPod?.metadata?.name) {
|
if (!createdPod?.metadata?.name) {
|
||||||
@@ -98,7 +100,7 @@ export async function prepareJob(
|
|||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
await prunePods()
|
await prunePods()
|
||||||
throw new Error(`Pod failed to come online with error: ${err}`)
|
throw new Error(`pod failed to come online with error: ${err}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
core.debug('Job pod is ready for traffic')
|
core.debug('Job pod is ready for traffic')
|
||||||
@@ -110,7 +112,11 @@ export async function prepareJob(
|
|||||||
JOB_CONTAINER_NAME
|
JOB_CONTAINER_NAME
|
||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(`Failed to determine if the pod is alpine: ${err}`)
|
core.debug(
|
||||||
|
`Failed to determine if the pod is alpine: ${JSON.stringify(err)}`
|
||||||
|
)
|
||||||
|
const message = (err as any)?.response?.body?.message || err
|
||||||
|
throw new Error(`failed to determine if the pod is alpine: ${message}`)
|
||||||
}
|
}
|
||||||
core.debug(`Setting isAlpine to ${isAlpine}`)
|
core.debug(`Setting isAlpine to ${isAlpine}`)
|
||||||
generateResponseFile(responseFile, createdPod, isAlpine)
|
generateResponseFile(responseFile, createdPod, isAlpine)
|
||||||
|
|||||||
@@ -36,7 +36,15 @@ export async function runContainerStep(
|
|||||||
core.debug(`Created secret ${secretName} for container job envs`)
|
core.debug(`Created secret ${secretName} for container job envs`)
|
||||||
const container = createContainerSpec(stepContainer, secretName, extension)
|
const container = createContainerSpec(stepContainer, secretName, extension)
|
||||||
|
|
||||||
const job = await createJob(container, extension)
|
let job: k8s.V1Job
|
||||||
|
try {
|
||||||
|
job = await createJob(container, extension)
|
||||||
|
} catch (err) {
|
||||||
|
core.debug(`createJob failed: ${JSON.stringify(err)}`)
|
||||||
|
const message = (err as any)?.response?.body?.message || err
|
||||||
|
throw new Error(`failed to run script step: ${message}`)
|
||||||
|
}
|
||||||
|
|
||||||
if (!job.metadata?.name) {
|
if (!job.metadata?.name) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Expected job ${JSON.stringify(
|
`Expected job ${JSON.stringify(
|
||||||
@@ -46,7 +54,15 @@ export async function runContainerStep(
|
|||||||
}
|
}
|
||||||
core.debug(`Job created, waiting for pod to start: ${job.metadata?.name}`)
|
core.debug(`Job created, waiting for pod to start: ${job.metadata?.name}`)
|
||||||
|
|
||||||
const podName = await getContainerJobPodName(job.metadata.name)
|
let podName: string
|
||||||
|
try {
|
||||||
|
podName = await getContainerJobPodName(job.metadata.name)
|
||||||
|
} catch (err) {
|
||||||
|
core.debug(`getContainerJobPodName failed: ${JSON.stringify(err)}`)
|
||||||
|
const message = (err as any)?.response?.body?.message || err
|
||||||
|
throw new Error(`failed to get container job pod name: ${message}`)
|
||||||
|
}
|
||||||
|
|
||||||
await waitForPodPhases(
|
await waitForPodPhases(
|
||||||
podName,
|
podName,
|
||||||
new Set([PodPhase.COMPLETED, PodPhase.RUNNING, PodPhase.SUCCEEDED]),
|
new Set([PodPhase.COMPLETED, PodPhase.RUNNING, PodPhase.SUCCEEDED]),
|
||||||
@@ -58,6 +74,7 @@ export async function runContainerStep(
|
|||||||
|
|
||||||
core.debug('Waiting for container job to complete')
|
core.debug('Waiting for container job to complete')
|
||||||
await waitForJobToComplete(job.metadata.name)
|
await waitForJobToComplete(job.metadata.name)
|
||||||
|
|
||||||
// pod has failed so pull the status code from the container
|
// pod has failed so pull the status code from the container
|
||||||
const status = await getPodStatus(podName)
|
const status = await getPodStatus(podName)
|
||||||
if (status?.phase === 'Succeeded') {
|
if (status?.phase === 'Succeeded') {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||||
import * as fs from 'fs'
|
import * as fs from 'fs'
|
||||||
|
import * as core from '@actions/core'
|
||||||
import { RunScriptStepArgs } from 'hooklib'
|
import { RunScriptStepArgs } from 'hooklib'
|
||||||
import { execPodStep } from '../k8s'
|
import { execPodStep } from '../k8s'
|
||||||
import { writeEntryPointScript } from '../k8s/utils'
|
import { writeEntryPointScript } from '../k8s/utils'
|
||||||
@@ -28,7 +29,9 @@ export async function runScriptStep(
|
|||||||
JOB_CONTAINER_NAME
|
JOB_CONTAINER_NAME
|
||||||
)
|
)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(`failed to run script step: ${err}`)
|
core.debug(`execPodStep failed: ${JSON.stringify(err)}`)
|
||||||
|
const message = (err as any)?.response?.body?.message || err
|
||||||
|
throw new Error(`failed to run script step: ${message}`)
|
||||||
} finally {
|
} finally {
|
||||||
fs.rmSync(runnerPath)
|
fs.rmSync(runnerPath)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user