Skip to content

Commit 20c19da

Browse files
authored
refactor around job claim name and runner instance labels (#20)
* refactor around job claim name, and runner instance labels * repaired failing test
1 parent 4307828 commit 20c19da

File tree

4 files changed

+26
-21
lines changed

4 files changed

+26
-21
lines changed

packages/docker/tests/run-script-step-test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ describe('run script step', () => {
5252
definitions.runScriptStep.args.entryPoint = '/bin/bash'
5353
definitions.runScriptStep.args.entryPointArgs = [
5454
'-c',
55-
`if [[ ! $(env | grep "^PATH=") = "PATH=${definitions.runScriptStep.args.prependPath}:"* ]]; then exit 1; fi`
55+
`if [[ ! $(env | grep "^PATH=") = "PATH=${definitions.runScriptStep.args.prependPath.join(
56+
':'
57+
)}:"* ]]; then exit 1; fi`
5658
]
5759
await expect(
5860
runScriptStep(definitions.runScriptStep.args, prepareJobResponse.state)

packages/k8s/src/hooks/constants.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,20 @@ const STEP_POD_NAME_SUFFIX_LENGTH = 8
4444
export const JOB_CONTAINER_NAME = 'job'
4545

4646
export class RunnerInstanceLabel {
47-
runnerhook: string
47+
private podName: string
4848
constructor() {
49-
this.runnerhook = process.env.ACTIONS_RUNNER_POD_NAME as string
49+
this.podName = getRunnerPodName()
5050
}
5151

5252
get key(): string {
5353
return 'runner-pod'
5454
}
5555

5656
get value(): string {
57-
return this.runnerhook
57+
return this.podName
5858
}
5959

6060
toString(): string {
61-
return `runner-pod=${this.runnerhook}`
61+
return `runner-pod=${this.podName}`
6262
}
6363
}

packages/k8s/src/k8s/index.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,14 @@ export async function createPod(
109109
export async function createJob(
110110
container: k8s.V1Container
111111
): Promise<k8s.V1Job> {
112-
const job = new k8s.V1Job()
112+
const runnerInstanceLabel = new RunnerInstanceLabel()
113113

114+
const job = new k8s.V1Job()
114115
job.apiVersion = 'batch/v1'
115116
job.kind = 'Job'
116117
job.metadata = new k8s.V1ObjectMeta()
117118
job.metadata.name = getStepPodName()
118-
job.metadata.labels = { 'runner-pod': getRunnerPodName() }
119+
job.metadata.labels = { [runnerInstanceLabel.key]: runnerInstanceLabel.value }
119120

120121
job.spec = new k8s.V1JobSpec()
121122
job.spec.ttlSecondsAfterFinished = 300
@@ -127,7 +128,7 @@ export async function createJob(
127128
job.spec.template.spec.restartPolicy = 'Never'
128129
job.spec.template.spec.nodeName = await getCurrentNodeName()
129130

130-
const claimName = `${runnerName()}-work`
131+
const claimName = getVolumeClaimName()
131132
job.spec.template.spec.volumes = [
132133
{
133134
name: 'work',
@@ -240,13 +241,18 @@ export async function createDockerSecret(
240241
}
241242
}
242243
}
244+
245+
const runnerInstanceLabel = new RunnerInstanceLabel()
246+
243247
const secretName = getSecretName()
244248
const secret = new k8s.V1Secret()
245249
secret.immutable = true
246250
secret.apiVersion = 'v1'
247251
secret.metadata = new k8s.V1ObjectMeta()
248252
secret.metadata.name = secretName
249-
secret.metadata.labels = { 'runner-pod': getRunnerPodName() }
253+
secret.metadata.labels = {
254+
[runnerInstanceLabel.key]: runnerInstanceLabel.value
255+
}
250256
secret.kind = 'Secret'
251257
secret.data = {
252258
'.dockerconfigjson': Buffer.from(
@@ -262,13 +268,18 @@ export async function createDockerSecret(
262268
export async function createSecretForEnvs(envs: {
263269
[key: string]: string
264270
}): Promise<string> {
271+
const runnerInstanceLabel = new RunnerInstanceLabel()
272+
265273
const secret = new k8s.V1Secret()
266274
const secretName = getSecretName()
267275
secret.immutable = true
268276
secret.apiVersion = 'v1'
269277
secret.metadata = new k8s.V1ObjectMeta()
270278
secret.metadata.name = secretName
271-
secret.metadata.labels = { 'runner-pod': getRunnerPodName() }
279+
280+
secret.metadata.labels = {
281+
[runnerInstanceLabel.key]: runnerInstanceLabel.value
282+
}
272283
secret.kind = 'Secret'
273284
secret.data = {}
274285
for (const [key, value] of Object.entries(envs)) {
@@ -474,16 +485,6 @@ export function namespace(): string {
474485
return context.namespace
475486
}
476487

477-
function runnerName(): string {
478-
const name = process.env.ACTIONS_RUNNER_POD_NAME
479-
if (!name) {
480-
throw new Error(
481-
'Failed to determine runner name. "ACTIONS_RUNNER_POD_NAME" env variables should be set.'
482-
)
483-
}
484-
return name
485-
}
486-
487488
class BackOffManager {
488489
private backOffSeconds = 1
489490
totalTime = 0

packages/k8s/tests/run-script-step-test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ describe('Run script step', () => {
9494
runScriptStepDefinition.args.entryPoint = '/bin/bash'
9595
runScriptStepDefinition.args.entryPointArgs = [
9696
'-c',
97-
`'if [[ ! $(env | grep "^PATH=") = "PATH=${runScriptStepDefinition.args.prependPath}:"* ]]; then exit 1; fi'`
97+
`'if [[ ! $(env | grep "^PATH=") = "PATH=${runScriptStepDefinition.args.prependPath.join(
98+
':'
99+
)}:"* ]]; then exit 1; fi'`
98100
]
99101

100102
await expect(

0 commit comments

Comments
 (0)