@@ -236,7 +236,7 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
236236
237237 const enableOrgLevel = yn ( process . env . ENABLE_ORGANIZATION_RUNNERS , { default : true } ) ;
238238 const maximumRunners = parseInt ( process . env . RUNNERS_MAXIMUM_COUNT || '3' ) ;
239- const runnerLabels = process . env . RUNNER_LABELS || '' ;
239+ let runnerLabels = process . env . RUNNER_LABELS || '' ;
240240 const runnerGroup = process . env . RUNNER_GROUP_NAME || 'Default' ;
241241 const environment = process . env . ENVIRONMENT ;
242242 const ssmTokenPath = process . env . SSM_TOKEN_PATH ;
@@ -353,10 +353,24 @@ export async function scaleUp(payloads: ActionRequestMessageSQS[]): Promise<stri
353353 let scaleUp = 0 ;
354354
355355 if ( messages . length > 0 && dynamicEc2ConfigEnabled ) {
356- const requestedInstanceType = messages [ 0 ] . labels
357- ?. find ( ( label ) => label . startsWith ( 'ghr-ec2-instance-type' ) )
358- ?. replace ( 'ghr-ec2-instance-type' , '' ) ;
359- instanceTypes = requestedInstanceType ? [ requestedInstanceType ] : instanceTypes ;
356+ const ec2Labels =
357+ messages [ 0 ] . labels ?. filter ( l => l . startsWith ( 'ghr-ec2-' ) ) ?? [ ] ;
358+
359+ if ( ec2Labels . length > 0 ) {
360+ // Append all EC2 labels to runnerLabels
361+ runnerLabels = runnerLabels
362+ ? `${ runnerLabels } ,${ ec2Labels . join ( ',' ) } `
363+ : ec2Labels . join ( ',' ) ;
364+
365+ // Extract instance type from EC2 labels
366+ const requestedInstanceType = ec2Labels
367+ . find ( l => l . startsWith ( 'ghr-ec2-instance-type:' ) )
368+ ?. replace ( 'ghr-ec2-instance-type:' , '' ) ;
369+
370+ if ( requestedInstanceType ) {
371+ instanceTypes = [ requestedInstanceType ] ;
372+ }
373+ }
360374 }
361375
362376 for ( const message of messages ) {
0 commit comments