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