Skip to content

Commit 5f56ef9

Browse files
fix: fix runner owner logic
1 parent f7fc866 commit 5f56ef9

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
@@ -335,6 +335,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
335335
type MessagesWithClient = {
336336
messages: ActionRequestMessageSQS[];
337337
githubInstallationClient: Octokit;
338+
runnerOwner: string;
338339
};
339340

340341
const validMessages = new Map<string, MessagesWithClient>();
@@ -364,8 +365,9 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
364365
continue;
365366
}
366367

367-
let key = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
368+
const runnerOwner = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
368369

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

@@ -387,6 +389,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
387389
entry = {
388390
messages: [],
389391
githubInstallationClient,
392+
runnerOwner: runnerOwner,
390393
};
391394

392395
validMessages.set(key, entry);
@@ -408,16 +411,18 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
408411

409412
logger.info(`Received events`);
410413

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

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

419422
const ec2Labels =
420-
messages[0].labels?.filter(l => l.startsWith('ghr-ec2-')) ?? [];
423+
messages[0].labels
424+
?.map(l => l.trim())
425+
.filter(l => l.startsWith('ghr-ec2-')) ?? [];
421426

422427
logger.info('EC2 labels detected', { ec2Labels });
423428

@@ -477,7 +482,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
477482

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

482487
logger.info('Current runners', {
483488
currentRunners,
@@ -530,7 +535,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
530535
runnerLabels,
531536
runnerGroup,
532537
runnerNamePrefix,
533-
runnerOwner: group,
538+
runnerOwner: runnerOwner,
534539
runnerType,
535540
disableAutoUpdate,
536541
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)