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