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

@@ -44,9 +44,9 @@ const STEP_POD_NAME_SUFFIX_LENGTH = 8
export const JOB_CONTAINER_NAME = 'job'
export class RunnerInstanceLabel {
runnerhook: string
private podName: string
constructor() {
this.runnerhook = process.env.ACTIONS_RUNNER_POD_NAME as string
this.podName = getRunnerPodName()
}
get key(): string {
@@ -54,10 +54,10 @@ export class RunnerInstanceLabel {
}
get value(): string {
return this.runnerhook
return this.podName
}
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(
container: k8s.V1Container
): Promise<k8s.V1Job> {
const job = new k8s.V1Job()
const runnerInstanceLabel = new RunnerInstanceLabel()
const job = new k8s.V1Job()
job.apiVersion = 'batch/v1'
job.kind = 'Job'
job.metadata = new k8s.V1ObjectMeta()
job.metadata.name = getStepPodName()
job.metadata.labels = { 'runner-pod': getRunnerPodName() }
job.metadata.labels = { [runnerInstanceLabel.key]: runnerInstanceLabel.value }
job.spec = new k8s.V1JobSpec()
job.spec.ttlSecondsAfterFinished = 300
@@ -127,7 +128,7 @@ export async function createJob(
job.spec.template.spec.restartPolicy = 'Never'
job.spec.template.spec.nodeName = await getCurrentNodeName()
const claimName = `${runnerName()}-work`
const claimName = getVolumeClaimName()
job.spec.template.spec.volumes = [
{
name: 'work',
@@ -240,13 +241,18 @@ export async function createDockerSecret(
}
}
}
const runnerInstanceLabel = new RunnerInstanceLabel()
const secretName = getSecretName()
const secret = new k8s.V1Secret()
secret.immutable = true
secret.apiVersion = 'v1'
secret.metadata = new k8s.V1ObjectMeta()
secret.metadata.name = secretName
secret.metadata.labels = { 'runner-pod': getRunnerPodName() }
secret.metadata.labels = {
[runnerInstanceLabel.key]: runnerInstanceLabel.value
}
secret.kind = 'Secret'
secret.data = {
'.dockerconfigjson': Buffer.from(
@@ -262,13 +268,18 @@ export async function createDockerSecret(
export async function createSecretForEnvs(envs: {
[key: string]: string
}): Promise<string> {
const runnerInstanceLabel = new RunnerInstanceLabel()
const secret = new k8s.V1Secret()
const secretName = getSecretName()
secret.immutable = true
secret.apiVersion = 'v1'
secret.metadata = new k8s.V1ObjectMeta()
secret.metadata.name = secretName
secret.metadata.labels = { 'runner-pod': getRunnerPodName() }
secret.metadata.labels = {
[runnerInstanceLabel.key]: runnerInstanceLabel.value
}
secret.kind = 'Secret'
secret.data = {}
for (const [key, value] of Object.entries(envs)) {
@@ -474,16 +485,6 @@ export function namespace(): string {
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 {
private backOffSeconds = 1
totalTime = 0

View File

@@ -94,7 +94,9 @@ describe('Run script step', () => {
runScriptStepDefinition.args.entryPoint = '/bin/bash'
runScriptStepDefinition.args.entryPointArgs = [
'-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(