@@ -292,7 +292,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
292292
293293 const enableOrgLevel = yn ( process . env . ENABLE_ORGANIZATION_RUNNERS , { default : true } ) ;
294294 const maximumRunners = parseInt ( process . env . RUNNERS_MAXIMUM_COUNT || '3' ) ;
295- const runnerLabels = process . env . RUNNER_LABELS || '' ;
295+ let runnerLabels = process . env . RUNNER_LABELS || '' ;
296296 const runnerGroup = process . env . RUNNER_GROUP_NAME || 'Default' ;
297297 const environment = process . env . ENVIRONMENT ;
298298 const ssmTokenPath = process . env . SSM_TOKEN_PATH ;
@@ -414,10 +414,24 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
414414 const queuedMessages : ActionRequestMessageSQS [ ] = [ ] ;
415415
416416 if ( messages . length > 0 && dynamicEc2ConfigEnabled ) {
417- const requestedInstanceType = messages [ 0 ] . labels
418- ?. find ( ( label ) => label . startsWith ( 'ghr-ec2-instance-type' ) )
419- ?. replace ( 'ghr-ec2-instance-type' , '' ) ;
420- instanceTypes = requestedInstanceType ? [ requestedInstanceType ] : instanceTypes ;
417+ const ec2Labels =
418+ messages [ 0 ] . labels ?. filter ( l => l . startsWith ( 'ghr-ec2-' ) ) ?? [ ] ;
419+
420+ if ( ec2Labels . length > 0 ) {
421+ // Append all EC2 labels to runnerLabels
422+ runnerLabels = runnerLabels
423+ ? `${ runnerLabels } ,${ ec2Labels . join ( ',' ) } `
424+ : ec2Labels . join ( ',' ) ;
425+
426+ // Extract instance type from EC2 labels
427+ const requestedInstanceType = ec2Labels
428+ . find ( l => l . startsWith ( 'ghr-ec2-instance-type:' ) )
429+ ?. replace ( 'ghr-ec2-instance-type:' , '' ) ;
430+
431+ if ( requestedInstanceType ) {
432+ instanceTypes = [ requestedInstanceType ] ;
433+ }
434+ }
421435 }
422436
423437 for ( const message of messages ) {
0 commit comments