mirror of
https://github.com/actions/runner-container-hooks.git
synced 2025-12-15 01:06:43 +00:00
Expose CI=true and GITHUB_ACTIONS env variables (#215)
* Expose CI=true and GITHUB_ACTIONS env variables * fmt * revert the prettier and finish this * revert package-lock.json
This commit is contained in:
@@ -229,6 +229,18 @@ export function createContainerSpec(
|
||||
}
|
||||
}
|
||||
|
||||
podContainer.env.push({
|
||||
name: 'GITHUB_ACTIONS',
|
||||
value: 'true'
|
||||
})
|
||||
|
||||
if (!('CI' in container['environmentVariables'])) {
|
||||
podContainer.env.push({
|
||||
name: 'CI',
|
||||
value: 'true'
|
||||
})
|
||||
}
|
||||
|
||||
podContainer.volumeMounts = containerVolumes(
|
||||
container.userMountVolumes,
|
||||
jobContainer
|
||||
|
||||
@@ -29,7 +29,14 @@ export async function runContainerStep(
|
||||
let secretName: string | undefined = undefined
|
||||
if (stepContainer.environmentVariables) {
|
||||
try {
|
||||
secretName = await createSecretForEnvs(stepContainer.environmentVariables)
|
||||
const envs = JSON.parse(
|
||||
JSON.stringify(stepContainer.environmentVariables)
|
||||
)
|
||||
envs['GITHUB_ACTIONS'] = 'true'
|
||||
if (!('CI' in envs)) {
|
||||
envs.CI = 'true'
|
||||
}
|
||||
secretName = await createSecretForEnvs(envs)
|
||||
} catch (err) {
|
||||
core.debug(`createSecretForEnvs failed: ${JSON.stringify(err)}`)
|
||||
const message = (err as any)?.response?.body?.message || err
|
||||
|
||||
@@ -62,6 +62,54 @@ describe('Prepare job', () => {
|
||||
).resolves.not.toThrow()
|
||||
})
|
||||
|
||||
it('should prepare job with envs CI and GITHUB_ACTIONS', async () => {
|
||||
await prepareJob(prepareJobData.args, prepareJobOutputFilePath)
|
||||
|
||||
const content = JSON.parse(
|
||||
fs.readFileSync(prepareJobOutputFilePath).toString()
|
||||
)
|
||||
|
||||
const got = await getPodByName(content.state.jobPod)
|
||||
expect(got.spec?.containers[0].env).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ name: 'CI', value: 'true' },
|
||||
{ name: 'GITHUB_ACTIONS', value: 'true' }
|
||||
])
|
||||
)
|
||||
expect(got.spec?.containers[1].env).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ name: 'CI', value: 'true' },
|
||||
{ name: 'GITHUB_ACTIONS', value: 'true' }
|
||||
])
|
||||
)
|
||||
})
|
||||
|
||||
it('should not override CI env var if already set', async () => {
|
||||
prepareJobData.args.container.environmentVariables = {
|
||||
CI: 'false'
|
||||
}
|
||||
|
||||
await prepareJob(prepareJobData.args, prepareJobOutputFilePath)
|
||||
|
||||
const content = JSON.parse(
|
||||
fs.readFileSync(prepareJobOutputFilePath).toString()
|
||||
)
|
||||
|
||||
const got = await getPodByName(content.state.jobPod)
|
||||
expect(got.spec?.containers[0].env).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ name: 'CI', value: 'false' },
|
||||
{ name: 'GITHUB_ACTIONS', value: 'true' }
|
||||
])
|
||||
)
|
||||
expect(got.spec?.containers[1].env).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ name: 'CI', value: 'true' },
|
||||
{ name: 'GITHUB_ACTIONS', value: 'true' }
|
||||
])
|
||||
)
|
||||
})
|
||||
|
||||
it('should throw an exception if the user volume mount is absolute path outside of GITHUB_WORKSPACE', async () => {
|
||||
prepareJobData.args.container.userMountVolumes = [
|
||||
{
|
||||
@@ -133,9 +181,13 @@ describe('Prepare job', () => {
|
||||
expect(got.spec?.containers[1].image).toBe('redis')
|
||||
expect(got.spec?.containers[1].command).toBeFalsy()
|
||||
expect(got.spec?.containers[1].args).toBeFalsy()
|
||||
expect(got.spec?.containers[1].env).toEqual([
|
||||
{ name: 'ENV2', value: 'value2' }
|
||||
])
|
||||
expect(got.spec?.containers[1].env).toEqual(
|
||||
expect.arrayContaining([
|
||||
{ name: 'CI', value: 'true' },
|
||||
{ name: 'GITHUB_ACTIONS', value: 'true' },
|
||||
{ name: 'ENV2', value: 'value2' }
|
||||
])
|
||||
)
|
||||
expect(got.spec?.containers[1].resources).toEqual({
|
||||
requests: { memory: '1Mi', cpu: '1' },
|
||||
limits: { memory: '1Gi', cpu: '2' }
|
||||
|
||||
@@ -78,4 +78,15 @@ describe('Run container step', () => {
|
||||
runContainerStep(runContainerStepData.args)
|
||||
).resolves.not.toThrow()
|
||||
})
|
||||
|
||||
it('should run container step with envs CI and GITHUB_ACTIONS', async () => {
|
||||
runContainerStepData.args.entryPoint = 'bash'
|
||||
runContainerStepData.args.entryPointArgs = [
|
||||
'-c',
|
||||
"'if [[ -z $GITHUB_ACTIONS ]] || [[ -z $CI ]]; then exit 1; fi'"
|
||||
]
|
||||
await expect(
|
||||
runContainerStep(runContainerStepData.args)
|
||||
).resolves.not.toThrow()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user