2022-06-02 15:53:11 -04:00
|
|
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
2022-06-15 03:41:49 +02:00
|
|
|
import * as fs from 'fs'
|
2023-12-15 13:01:04 +01:00
|
|
|
import * as core from '@actions/core'
|
2022-06-02 15:53:11 -04:00
|
|
|
import { RunScriptStepArgs } from 'hooklib'
|
|
|
|
|
import { execPodStep } from '../k8s'
|
2022-06-15 03:41:49 +02:00
|
|
|
import { writeEntryPointScript } from '../k8s/utils'
|
|
|
|
|
import { JOB_CONTAINER_NAME } from './constants'
|
2022-06-02 15:53:11 -04:00
|
|
|
|
|
|
|
|
export async function runScriptStep(
|
|
|
|
|
args: RunScriptStepArgs,
|
|
|
|
|
state,
|
|
|
|
|
responseFile
|
|
|
|
|
): Promise<void> {
|
2022-06-15 03:41:49 +02:00
|
|
|
const { entryPoint, entryPointArgs, environmentVariables } = args
|
|
|
|
|
const { containerPath, runnerPath } = writeEntryPointScript(
|
|
|
|
|
args.workingDirectory,
|
|
|
|
|
entryPoint,
|
|
|
|
|
entryPointArgs,
|
|
|
|
|
args.prependPath,
|
|
|
|
|
environmentVariables
|
2022-06-02 15:53:11 -04:00
|
|
|
)
|
|
|
|
|
|
2022-06-15 03:41:49 +02:00
|
|
|
args.entryPoint = 'sh'
|
|
|
|
|
args.entryPointArgs = ['-e', containerPath]
|
|
|
|
|
try {
|
|
|
|
|
await execPodStep(
|
|
|
|
|
[args.entryPoint, ...args.entryPointArgs],
|
|
|
|
|
state.jobPod,
|
|
|
|
|
JOB_CONTAINER_NAME
|
|
|
|
|
)
|
|
|
|
|
} catch (err) {
|
2023-12-15 13:01:04 +01:00
|
|
|
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}`)
|
2022-06-15 03:41:49 +02:00
|
|
|
} finally {
|
|
|
|
|
fs.rmSync(runnerPath)
|
2022-06-02 15:53:11 -04:00
|
|
|
}
|
|
|
|
|
}
|