refactor around job claim name and runner instance labels (#20)

* refactor around job claim name, and runner instance labels

* repaired failing test
This commit is contained in:
Nikola Jokic
2022-06-22 06:32:50 -07:00
committed by GitHub
parent 4307828719
commit 20c19dae27
4 changed files with 26 additions and 21 deletions

View File

@@ -52,7 +52,9 @@ describe('run script step', () => {
definitions.runScriptStep.args.entryPoint = '/bin/bash' definitions.runScriptStep.args.entryPoint = '/bin/bash'
definitions.runScriptStep.args.entryPointArgs = [ definitions.runScriptStep.args.entryPointArgs = [
'-c', '-c',
`if [[ ! $(env | grep "^PATH=") = "PATH=${definitions.runScriptStep.args.prependPath}:"* ]]; then exit 1; fi` `if [[ ! $(env | grep "^PATH=") = "PATH=${definitions.runScriptStep.args.prependPath.join(
':'
)}:"* ]]; then exit 1; fi`
] ]
await expect( await expect(
runScriptStep(definitions.runScriptStep.args, prepareJobResponse.state) runScriptStep(definitions.runScriptStep.args, prepareJobResponse.state)

View File

@@ -44,9 +44,9 @@ const STEP_POD_NAME_SUFFIX_LENGTH = 8
export const JOB_CONTAINER_NAME = 'job' export const JOB_CONTAINER_NAME = 'job'
export class RunnerInstanceLabel { export class RunnerInstanceLabel {
runnerhook: string private podName: string
constructor() { constructor() {
this.runnerhook = process.env.ACTIONS_RUNNER_POD_NAME as string this.podName = getRunnerPodName()
} }
get key(): string { get key(): string {
@@ -54,10 +54,10 @@ export class RunnerInstanceLabel {
} }
get value(): string { get value(): string {
return this.runnerhook return this.podName
} }
toString(): string { toString(): string {
return `runner-pod=${this.runnerhook}` return `runner-pod=${this.podName}`
} }
} }

View File

@@ -109,13 +109,14 @@ export async function createPod(
export async function createJob( export async function createJob(
container: k8s.V1Container container: k8s.V1Container
): Promise<k8s.V1Job> { ): Promise<k8s.V1Job> {
const job = new k8s.V1Job() const runnerInstanceLabel = new RunnerInstanceLabel()
const job = new k8s.V1Job()
job.apiVersion = 'batch/v1' job.apiVersion = 'batch/v1'
job.kind = 'Job' job.kind = 'Job'
job.metadata = new k8s.V1ObjectMeta() job.metadata = new k8s.V1ObjectMeta()
job.metadata.name = getStepPodName() job.metadata.name = getStepPodName()
job.metadata.labels = { 'runner-pod': getRunnerPodName() } job.metadata.labels = { [runnerInstanceLabel.key]: runnerInstanceLabel.value }
job.spec = new k8s.V1JobSpec() job.spec = new k8s.V1JobSpec()
job.spec.ttlSecondsAfterFinished = 300 job.spec.ttlSecondsAfterFinished = 300
@@ -127,7 +128,7 @@ export async function createJob(
job.spec.template.spec.restartPolicy = 'Never' job.spec.template.spec.restartPolicy = 'Never'
job.spec.template.spec.nodeName = await getCurrentNodeName() job.spec.template.spec.nodeName = await getCurrentNodeName()
const claimName = `${runnerName()}-work` const claimName = getVolumeClaimName()
job.spec.template.spec.volumes = [ job.spec.template.spec.volumes = [
{ {
name: 'work', name: 'work',
@@ -240,13 +241,18 @@ export async function createDockerSecret(
} }
} }
} }
const runnerInstanceLabel = new RunnerInstanceLabel()
const secretName = getSecretName() const secretName = getSecretName()
const secret = new k8s.V1Secret() const secret = new k8s.V1Secret()
secret.immutable = true secret.immutable = true
secret.apiVersion = 'v1' secret.apiVersion = 'v1'
secret.metadata = new k8s.V1ObjectMeta() secret.metadata = new k8s.V1ObjectMeta()
secret.metadata.name = secretName secret.metadata.name = secretName
secret.metadata.labels = { 'runner-pod': getRunnerPodName() } secret.metadata.labels = {
[runnerInstanceLabel.key]: runnerInstanceLabel.value
}
secret.kind = 'Secret' secret.kind = 'Secret'
secret.data = { secret.data = {
'.dockerconfigjson': Buffer.from( '.dockerconfigjson': Buffer.from(
@@ -262,13 +268,18 @@ export async function createDockerSecret(
export async function createSecretForEnvs(envs: { export async function createSecretForEnvs(envs: {
[key: string]: string [key: string]: string
}): Promise<string> { }): Promise<string> {
const runnerInstanceLabel = new RunnerInstanceLabel()
const secret = new k8s.V1Secret() const secret = new k8s.V1Secret()
const secretName = getSecretName() const secretName = getSecretName()
secret.immutable = true secret.immutable = true
secret.apiVersion = 'v1' secret.apiVersion = 'v1'
secret.metadata = new k8s.V1ObjectMeta() secret.metadata = new k8s.V1ObjectMeta()
secret.metadata.name = secretName secret.metadata.name = secretName
secret.metadata.labels = { 'runner-pod': getRunnerPodName() }
secret.metadata.labels = {
[runnerInstanceLabel.key]: runnerInstanceLabel.value
}
secret.kind = 'Secret' secret.kind = 'Secret'
secret.data = {} secret.data = {}
for (const [key, value] of Object.entries(envs)) { for (const [key, value] of Object.entries(envs)) {
@@ -474,16 +485,6 @@ export function namespace(): string {
return context.namespace return context.namespace
} }
function runnerName(): string {
const name = process.env.ACTIONS_RUNNER_POD_NAME
if (!name) {
throw new Error(
'Failed to determine runner name. "ACTIONS_RUNNER_POD_NAME" env variables should be set.'
)
}
return name
}
class BackOffManager { class BackOffManager {
private backOffSeconds = 1 private backOffSeconds = 1
totalTime = 0 totalTime = 0

View File

@@ -94,7 +94,9 @@ describe('Run script step', () => {
runScriptStepDefinition.args.entryPoint = '/bin/bash' runScriptStepDefinition.args.entryPoint = '/bin/bash'
runScriptStepDefinition.args.entryPointArgs = [ runScriptStepDefinition.args.entryPointArgs = [
'-c', '-c',
`'if [[ ! $(env | grep "^PATH=") = "PATH=${runScriptStepDefinition.args.prependPath}:"* ]]; then exit 1; fi'` `'if [[ ! $(env | grep "^PATH=") = "PATH=${runScriptStepDefinition.args.prependPath.join(
':'
)}:"* ]]; then exit 1; fi'`
] ]
await expect( await expect(