Skip to content

Commit ee7be34

Browse files
fix: fix runner owner logic
1 parent 8fd3fc3 commit ee7be34

3 files changed

Lines changed: 14 additions & 6 deletions

File tree

lambdas/functions/control-plane/src/scale-runners/scale-up.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
337337
type MessagesWithClient = {
338338
messages: ActionRequestMessageSQS[];
339339
githubInstallationClient: Octokit;
340+
runnerOwner: string;
340341
};
341342

342343
const validMessages = new Map<string, MessagesWithClient>();
@@ -366,8 +367,9 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
366367
continue;
367368
}
368369

369-
let key = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
370+
const runnerOwner = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
370371

372+
let key = runnerOwner;
371373
if (dynamicEc2ConfigEnabled && labels?.length) {
372374
const requestedDynamicEc2Config = labels.find((l) => l.startsWith('ghr-ec2-'))?.slice('ghr-ec2-'.length);
373375

@@ -389,6 +391,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
389391
entry = {
390392
messages: [],
391393
githubInstallationClient,
394+
runnerOwner: runnerOwner,
392395
};
393396

394397
validMessages.set(key, entry);
@@ -410,16 +413,18 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
410413

411414
logger.info(`Received events`);
412415

413-
for (const [group, { githubInstallationClient, messages }] of validMessages.entries()) {
416+
for (const [group, { githubInstallationClient, messages, runnerOwner }] of validMessages.entries()) {
414417
// Work out how much we want to scale up by.
415418
let scaleUp = 0;
416419
const queuedMessages: ActionRequestMessageSQS[] = [];
417420

418421
if (messages.length > 0 && dynamicEc2ConfigEnabled) {
419-
logger.info('Dynamic EC2 config enabled, processing labels');
422+
logger.info('Dynamic EC2 config enabled, processing labels', {labels: messages[0].labels});
420423

421424
const ec2Labels =
422-
messages[0].labels?.filter(l => l.startsWith('ghr-ec2-')) ?? [];
425+
messages[0].labels
426+
?.map(l => l.trim())
427+
.filter(l => l.startsWith('ghr-ec2-')) ?? [];
423428

424429
logger.info('EC2 labels detected', { ec2Labels });
425430

@@ -479,7 +484,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
479484

480485
// Don't call the EC2 API if we can create an unlimited number of runners.
481486
const currentRunners =
482-
maximumRunners === -1 ? 0 : (await listEC2Runners({ environment, runnerType, runnerOwner: group })).length;
487+
maximumRunners === -1 ? 0 : (await listEC2Runners({ environment, runnerType, runnerOwner: runnerOwner })).length;
483488

484489
logger.info('Current runners', {
485490
currentRunners,
@@ -532,7 +537,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
532537
runnerLabels,
533538
runnerGroup,
534539
runnerNamePrefix,
535-
runnerOwner: group,
540+
runnerOwner: runnerOwner,
536541
runnerType,
537542
disableAutoUpdate,
538543
ssmTokenPath,

lambdas/functions/webhook/src/runners/dispatch.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ describe('Dispatcher', () => {
103103
installationId: 0,
104104
queueId: runnerConfig[0].id,
105105
repoOwnerType: 'Organization',
106+
labels: ['self-hosted', 'Test']
106107
});
107108
});
108109

@@ -150,6 +151,7 @@ describe('Dispatcher', () => {
150151
installationId: 0,
151152
queueId: 'match',
152153
repoOwnerType: 'Organization',
154+
labels: ['self-hosted', 'match'],
153155
});
154156
});
155157

lambdas/functions/webhook/src/runners/dispatch.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ async function handleWorkflowJob(
5656
installationId: body.installation?.id ?? 0,
5757
queueId: queue.id,
5858
repoOwnerType: body.repository.owner.type,
59+
labels: body.workflow_job.labels,
5960
});
6061
logger.info(
6162
`Successfully dispatched job for ${body.repository.full_name} to the queue ${queue.id} - ` +

0 commit comments

Comments
 (0)