@@ -271,7 +271,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
271271
272272 const enableOrgLevel = yn ( process . env . ENABLE_ORGANIZATION_RUNNERS , { default : true } ) ;
273273 const maximumRunners = parseInt ( process . env . RUNNERS_MAXIMUM_COUNT || '3' ) ;
274- const runnerLabels = process . env . RUNNER_LABELS || '' ;
274+ let runnerLabels = process . env . RUNNER_LABELS || '' ;
275275 const runnerGroup = process . env . RUNNER_GROUP_NAME || 'Default' ;
276276 const environment = process . env . ENVIRONMENT ;
277277 const ssmTokenPath = process . env . SSM_TOKEN_PATH ;
@@ -392,10 +392,24 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
392392 let scaleUp = 0 ;
393393
394394 if ( messages . length > 0 && dynamicEc2ConfigEnabled ) {
395- const requestedInstanceType = messages [ 0 ] . labels
396- ?. find ( ( label ) => label . startsWith ( 'ghr-ec2-instance-type' ) )
397- ?. replace ( 'ghr-ec2-instance-type' , '' ) ;
398- instanceTypes = requestedInstanceType ? [ requestedInstanceType ] : instanceTypes ;
395+ const ec2Labels =
396+ messages [ 0 ] . labels ?. filter ( l => l . startsWith ( 'ghr-ec2-' ) ) ?? [ ] ;
397+
398+ if ( ec2Labels . length > 0 ) {
399+ // Append all EC2 labels to runnerLabels
400+ runnerLabels = runnerLabels
401+ ? `${ runnerLabels } ,${ ec2Labels . join ( ',' ) } `
402+ : ec2Labels . join ( ',' ) ;
403+
404+ // Extract instance type from EC2 labels
405+ const requestedInstanceType = ec2Labels
406+ . find ( l => l . startsWith ( 'ghr-ec2-instance-type:' ) )
407+ ?. replace ( 'ghr-ec2-instance-type:' , '' ) ;
408+
409+ if ( requestedInstanceType ) {
410+ instanceTypes = [ requestedInstanceType ] ;
411+ }
412+ }
399413 }
400414
401415 for ( const message of messages ) {
0 commit comments