### # Gitlab runner configuration file # -------------------------------------- # Default locations: # - /etc/gitlab-runner/config.toml # - $HOME/.gitlab-runner/config.toml # # Refer 'https://docs.gitlab.com/runner/configuration/advanced-configuration.html' ### concurrent = 32 # global through *all* runners listen_address = "0.0.0.0:9100" ### # Docker autoscaler executor # ------------------ ### [[runners]] name = "docker autoscaler on AWS" # instances using docker-autoscaler executor # ---------------- # up to 10 instances at a time, min 1 idle during working hours # use each instance for up to 250 jobs # 1 job per instance at a time url = "https://gitlab.example.org" token = "glrt-abc…" environment = [ "AWS_REGION=eu-west-1" ] executor = "docker-autoscaler" [runners.docker] privileged = false image = "busybox:latest" pull_policy = [ "if-not-present", "always" ] allowed_pull_policies = [ "if-not-present", "always", "never" ] [runners.autoscaler] plugin = "aws" max_instances = 10 max_use_count = 250 capacity_per_instance = 1 [runners.autoscaler.plugin_config] name = "GitlabRunners" # autoscaling group name [[runners.autoscaler.policy]] periods = [ "* 7-19 * * mon-fri" ] timezone = "Europe/Amsterdam" idle_count = 1 idle_time = "20m0s" ### Docker autoscaler executor - end ### # Docker machine executor # ------------------ # DEPRECATED - use 'docker-autoscaler' or 'instance' executors instead ### [[runners]] name = "docker machine ondemand on AWS" # ondemand instance using docker+machine executor # ---------------- # Up to 1, min 1 during working hours url = "https://gitlab.example.org" token = "glrt-abc…" environment = [ "AWS_REGION=eu-west-1" ] executor = "docker+machine" # Number of jobs that can be run concurrently by the VMs created by *this* runner # Defines the *upper limit* of how many VMs can be created by *this* runner, since it is 1 task per VM at a time limit = 1 [runners.cache] Type = "s3" Path = "cache/" Shared = true MaxUploadedArchiveSize = 0 [runners.cache.s3] ServerAddress = "s3.amazonaws.com" BucketName = "exampleorg-gitlab-cache" BucketLocation = "eu-west-1" [runners.docker] tls_verify = false image = "busybox:latest" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = [ "/cache", # docker-in-docker "/var/run/docker.sock:/var/run/docker.sock" ] shm_size = 0 network_mtu = 0 pull_policy = [ "if-not-present", "always" ] allowed_pull_policies = [ "if-not-present", "always", "never" ] [runners.docker.services_tmpfs] # speed up i/o for 'postgresql' services "/var/lib/postgresql/data" = "rw,noexec" [runners.machine] # Static number of VMs that need to be idle at all times IdleCount = 0 # Remove VMs after 250 jobs # Keeps instances "fresh" MaxBuilds = 250 # Maximum number of VMs that can be added to this runner in parallel # Defaults to 0 (no limit) MaxGrowthRate = 1 MachineDriver = "amazonec2" MachineName = "autoscaled-b-ondemand-%s" MachineOptions = [ "amazonec2-region=eu-west-1", "amazonec2-vpc-id=vpc-01234567", "amazonec2-zone=b", "amazonec2-subnet-id=subnet-0123456789abcdef0", "amazonec2-use-private-address=true", "amazonec2-private-address-only=true", "amazonec2-security-group=GitlabRunners", "amazonec2-instance-type=m7i.xlarge", "amazonec2-root-size=50", "amazonec2-volume-type=gp3", "amazonec2-iam-instance-profile=GitlabRunner", "amazonec2-tags=Team,Infra,Application,GitlabRunner,SpotInstance,False", ] [[runners.machine.autoscaling]] Periods = [ "* * 9-5 * * mon-fri *" ] Timezone = "Europe/Amsterdam" IdleCount = 1 [[runners]] name = "docker machine spot on AWS" # spot instances using docker+machine executor # ---------------- # Up to 10, min 2 during working hours url = "https://gitlab.example.org" token = "glrt-abc…" environment = [ "AWS_REGION=eu-west-1" ] executor = "docker+machine" limit = 10 request_concurrency = 4 [runners.cache] Type = "s3" Path = "cache/" Shared = true MaxUploadedArchiveSize = 0 [runners.cache.s3] ServerAddress = "s3.amazonaws.com" BucketName = "exampleorg-gitlab-cache" BucketLocation = "eu-west-1" [runners.docker] tls_verify = false image = "busybox:latest" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = [ "/cache", # docker-in-docker "/var/run/docker.sock:/var/run/docker.sock" ] shm_size = 0 network_mtu = 0 services_limit = -1 pull_policy = [ "if-not-present", "always" ] allowed_pull_policies = [ "if-not-present", "always", "never" ] [runners.docker.services_tmpfs] # speed up i/o for 'postgresql' services "/var/lib/postgresql/data" = "rw,noexec" [runners.machine] IdleCount = 0 # Remove VMs after 5m in the idle state IdleTime = 300 MaxBuilds = 50 MaxGrowthRate = 4 MachineDriver = "amazonec2" MachineName = "autoscaled-a-spot-%s" MachineOptions = [ "amazonec2-region=eu-west-1", "amazonec2-vpc-id=vpc-01234567", "amazonec2-zone=a", "amazonec2-subnet-id=subnet-0123456789abcdef0", "amazonec2-use-private-address=true", "amazonec2-private-address-only=true", "amazonec2-security-group=GitlabRunners", "amazonec2-instance-type=m7i.xlarge", "amazonec2-root-size=50", "amazonec2-volume-type=gp3", "amazonec2-iam-instance-profile=GitlabRunner", "amazonec2-tags=Team,Infra,Application,GitlabRunner,SpotInstance,True", "amazonec2-request-spot-instance=true", "amazonec2-spot-price=0.3", ] [[runners.machine.autoscaling]] Periods = ["* 7-19 * * mon-fri *"] Timezone = "Europe/Amsterdam" IdleCount = 10 IdleCountMin = 2 IdleScaleFactor = 1.5 IdleTime = 900 ### Docker machine executor - end