Skip to content

Commit cc4efa6

Browse files
fix: fix runner owner logic
1 parent 19cf04f commit cc4efa6

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
@@ -315,6 +315,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
315315
type MessagesWithClient = {
316316
messages: ActionRequestMessageSQS[];
317317
githubInstallationClient: Octokit;
318+
runnerOwner: string;
318319
};
319320

320321
const validMessages = new Map<string, MessagesWithClient>();
@@ -344,8 +345,9 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
344345
continue;
345346
}
346347

347-
let key = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
348+
const runnerOwner = enableOrgLevel ? payload.repositoryOwner : `${payload.repositoryOwner}/${payload.repositoryName}`;
348349

350+
let key = runnerOwner;
349351
if (dynamicEc2ConfigEnabled && labels?.length) {
350352
const requestedDynamicEc2Config = labels.find((l) => l.startsWith('ghr-ec2-'))?.slice('ghr-ec2-'.length);
351353

@@ -367,6 +369,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
367369
entry = {
368370
messages: [],
369371
githubInstallationClient,
372+
runnerOwner: runnerOwner,
370373
};
371374

372375
validMessages.set(key, entry);
@@ -388,16 +391,18 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
388391

389392
logger.info(`Received events`);
390393

391-
for (const [group, { githubInstallationClient, messages }] of validMessages.entries()) {
394+
for (const [group, { githubInstallationClient, messages, runnerOwner }] of validMessages.entries()) {
392395
// Work out how much we want to scale up by.
393396
let scaleUp = 0;
394397
const queuedMessages: ActionRequestMessageSQS[] = [];
395398

396399
if (messages.length > 0 && dynamicEc2ConfigEnabled) {
397-
logger.info('Dynamic EC2 config enabled, processing labels');
400+
logger.info('Dynamic EC2 config enabled, processing labels', {labels: messages[0].labels});
398401

399402
const ec2Labels =
400-
messages[0].labels?.filter(l => l.startsWith('ghr-ec2-')) ?? [];
403+
messages[0].labels
404+
?.map(l => l.trim())
405+
.filter(l => l.startsWith('ghr-ec2-')) ?? [];
401406

402407
logger.info('EC2 labels detected', { ec2Labels });
403408

@@ -457,7 +462,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
457462

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

462467
logger.info('Current runners', {
463468
currentRunners,
@@ -510,7 +515,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
510515
runnerLabels,
511516
runnerGroup,
512517
runnerNamePrefix,
513-
runnerOwner: group,
518+
runnerOwner: runnerOwner,
514519
runnerType,
515520
disableAutoUpdate,
516521
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)