The stack is written specifically for docker executor. We have not experimented with shell executor. I suppose you could replace it with shell executor but work is required to update the Launch Template to create shell executors.
A CloudWatch Event Rule "ExecuteRunnerMonitor" runs the Runner monitor lambda function every minute (See the gitlbab-runner.yaml file). The function adjusts the desired capacity of the runner autoscaling group according to the workload. The calculation is in the index.ts. file:
let desiredCapacity = (metrics.currentJobCount + newJobCountBeforeScaling) / concurrentJobsPerRunner
desiredCapacity = Math.ceil(desiredCapacity)
// Make sure we dont go below our min
desiredCapacity = Math.max(desiredCapacity, metrics.minInstances)
// Make sure we dont go above our max
desiredCapacity = Math.min(desiredCapacity, metrics.maxInstances)
Hello,