Shared runners
Instead of dedicating specific runners to individual projects, SHIP-HATS team offers and manages a pool of runners to handle jobs from any project that is configured to use them.
Benefits of shared runners
- Created on-demand.
- Available for all SHIP-HATS users at no additional costs!
- No overheads for agencies as they do not need to maintain runners.
For more details, refer to Shared runners vs Agency-hosted runners.
Types of shared runners
Following shared runners are available:
- CStack runners
- Docker runners
- GitLab-hosted runners
- Windows runners
- If you have not specified any runner tag, by default, CStack runners will be used.
- We are piloting GitLab-hosted runners. Depending on the pilot outcome, we plan to decommission CStack runners (decommissioning date to be confirmed soon). For details, refer to Pilot initiative of GitLab-hosted runners.
| Property | Details |
|---|---|
| Hosted by | CStack |
| Executor | kubernetes |
| Tags | cstack non_privileged no_root |
| Privileged | FALSE |
| Cache enabled | YES |
| Run untag | YES (If no runner tag is configured, by default, CStack runners are used for your job.) |
| Egress IPs | 13.251.177.7/32 18.143.61.190/32 18.143.26.175/32 18.142.30.19/32 18.140.93.144/32 |
| Use cases | General automation tasks, except for building containers. |
| Additional info | - Max: 4 vCPUs, 8 GB memory - Runs as non-root (user ID: 65533) - Uses Container Stack in SGTS. |
Docker runners are available in two architecture types:
| Property | Details |
|---|---|
| Executor | docker + autoscale |
| Tags | AMD64 - Small: ship_docker AMD64 - Medium: ship_docker_med AMD64 - Large: ship_docker_largeARM64 - Small: ship_docker_arm |
| Privileged | FALSE |
| Cache enabled | YES |
| Run untag | NO |
| Egress IPs | 18.143.26.175/32 18.142.30.19/32 18.140.93.144/32 |
| Hosted by | SHIP-HATS |
| Use cases | Build a Docker image |
| Additional info | For AMD64-based runners: - Type: t3.large - Runs as root - Slower than CStack for non-Docker builds - Privileged access removed (affects Docker-in-Docker) - Use Kaniko - CI template For ARM64-based runners: - Not compatible with prebuilt Pipeline-coe Docker image (AMD64) - Not compatible with AMD64-based Kaniko and other container images - Use multi-arch-compatible images where possible (e.g., Kaniko multi-arch). For more details, Choose the right docker runners. |
GitLab-hosted runners are available as a pilot (from 01 August, 2025) for projects classified as Restricted / Sensitive-Normal and below. These runners automatically scale on AWS EC2 instances in the same region as your GitLab Dedicated instance.
| Property | Details |
|---|---|
| Executor | Docker Autoscaler |
| Tags | x86-64 - Small: linux-small-amd64x86-64 - Medium: linux-medium-amd64x86-64 - Large: linux-large-amd64ARM64 - Small: linux-small-arm64 |
| Privileged | YES (Supports Docker-in-Docker) |
| Cache enabled | YES. During Limited Availability (LA), the shared cache is only available within the same runner size. For example, jobs on linux-small-amd64 share a cache only with other small runners.When GitLab-hosted runners reach General Availability (GA), the cache will be shared across all runner sizes. |
| Run untagged | NO |
| Egress IPs | - linux-small-amd64: 13.215.79.67, 54.255.97.140, 47.131.209.98, 47.130.122.133- linux-medium-amd64: 47.130.161.233, 18.140.155.213, 13.215.99.51, 52.74.126.12- linux-large-amd64: 18.142.163.122, 18.142.34.239, 13.229.191.100, 13.229.0.67- linux-small-arm64: 18.139.173.130, 47.130.41.25, 47.130.164.31, 3.1.158.242 |
| Hosted by | GitLab |
| Use cases | For projects classified as Restricted / Sensitive-Normal and below and CI/CD jobs needing secure isolation, Docker-in-Docker builds, performance-critical workloads |
| Additional info | - Uses latest Docker Engine - Each job runs in an isolated, ephemeral VM - Passwordless sudo access available - Disk space shared by OS, tools, and repo clone (may be limited). For more details, refer to GitLab-hosted shared runners. |
SHIP-HATS supports multiple Windows runner images for different Visual Studio (VS) versions. If you have not specified any image version, GitLab Windows runner will use VS 2022. If your project requires a different image than those listed, you may also use a custom image.
| Property | Details |
|---|---|
| Executor | docker-windows |
| Tags | ship_windows ship_windows_docker |
| Privileged | N/A |
| Cache enabled | YES |
| Run untag | NO |
| Egress IPs | 18.143.26.175/32 18.142.30.19/32 18.140.93.144/32 |
| Hosted by | SHIP-HATS |
| Use cases | Build with .NET Framework |
| Additional info | - OS: Windows Server 2022 Base - Git: 2.36.1 - chocolatey - Image tags: - vs2017- vs2019- vs2022- VS versions - Specify tag - Libraries |
Types of Docker runners
To ensure efficient and fair usage of our shared CI/CD resources, we provide Docker runners in two architecture types:
Choose the appropriate architecture based on your workload requirements, and then select a runner size based on job complexity.
ARM64 Docker runners
- As part of our pilot initiative, this runner will be available from 19 June 2025.
- This docker runner is currently free to use, but may become billable in the future.
- Only one variant is available for ARM64 runners and that is ARM64 - Small.
| Property | Value |
|---|---|
| Tag | ship_docker_arm |
| vCPU | 2 |
| Memory | 8 GB |
| Storage | 30 GB |
| Idle count | Low. This means jobs may start slower due to fewer idle nodes available. |
| Suitable for | - ARM-native development and testing - Use when targeting ARM-based cloud instances (e.g., AWS Graviton) - Use when the underlying system requires ARM architecture Note: ❌ Not compatible with Pipeline-coe prebuilt Docker images (AMD64)❌ Not compatible with AMD64 -based Kaniko or other images ✅ Use the official multi-arch Kaniko image: gcr.io/kaniko-project/executor:debugRecommendation: If unsure, use AMD64, as it is more widely supported across environments. |
AMD64 Docker runners
Following are the three variants for AMD64 runner:
- Small
- Medium
- Large
| Property | Value |
|---|---|
| Tag | ship_docker |
| vCPU | 2 |
| Memory | 8 GB |
| Storage | 30 GB |
| Idle count | High. This means jobs usually start quickly due to more idle nodes. |
| Suitable for | - Ideal to start with this runner - Unit/quick tests - Code linting/formatting - Suitable for jobs that typically complete under 10 minutes. Consider switching to Medium docker runner if you experience delays. |
The Medium and Large Docker runners are currently free to use, but may become billable in the future. We recommend planning your usage accordingly.
| Property | Value |
|---|---|
| Tag | ship_docker_med |
| vCPU | 4 |
| Memory | 16 GB |
| Storage | 50 GB |
| Idle count | Medium |
| Suitable for | - Moderately heavy tasks and integration tests. - Ideal for jobs that time out (jobs exceed 10 minutes while using Small docker runners) or encounter CPU/memory bottlenecks. |
The Medium and Large Docker runners are currently free to use, but may become billable in the future. We recommend planning your usage accordingly.
| Property | Value |
|---|---|
| Tag | ship_docker_large |
| vCPU | 8 |
| Memory | 32 GB |
| Storage | 100 GB |
| Idle count | Low. This means jobs may have longer queue times when all idle nodes are in use. |
| Suitable for | - Resource-intensive builds - End-to-end tests with high concurrency - Jobs requiring high memory/CPU such as data processing - Long-running jobs - Large test suites. - Ideal for jobs that time out (jobs exceed 60 minutes while using Medium docker runners) or encounter CPU/memory bottlenecks. |
Choose the right Docker runners
Step 1: Start by choosing the right architecture
- Use ARM64 runner only if your workload targets ARM-based systems (e.g., AWS Graviton) or you’re using ARM-specific container images.
- Use AMD64 runners for all other jobs, choose AMD64 runners as they are suitable for most jobs.
Step 2: Choose the right size
Only one variant is available for ARM64 runners and that is ARM64 - Small.
If you are choosing, AMD64 runners: ✅ Start with the Small Docker runner - Ideal for jobs that usually complete under 10 minutes. Monitor the performance and if you experience delays, switch to a larger runner.
⏱️ Move to the Medium Docker runner if your job consistently exceeds 10 minutes or hits CPU/memory limits while using the Small docker runner. It’s better suited for moderately heavy workloads or jobs.
🔧 Use the Large Docker runner if your job consistently exceeds 60 minutes or hits CPU/memory limits while using the Medium docker runner. Ideal for resource-intensive builds, end-to-end testing with high concurrency, or jobs that require significantly more CPU and memory.
- If no runner tag is configured, by default, CStack runners are used for your job.
- We also provide you a dashboard to monitor the performance of shared runners.
- Currently, you can view the performance of the shared Docker runners offered by SHIP-HATS.
GitLab-hosted shared runners
GitLab-hosted runners offer a secure, scalable environment to execute CI/CD jobs efficiently.
Key features
Autoscaling: GitLab-hosted shared runners automatically scale using AWS EC2 instances located in the same region as your GitLab dedicated instance, ensuring low latency and better performance.
Job isolation: Each CI job runs on a freshly provisioned virtual machine (VM), providing complete isolation and improved security.
Sudo access: While using GitLab-hosted shared runners, the VMs offer passwordless
sudoaccess, enabling jobs to execute privileged commands when needed.Docker-in-Docker Support: GitLab-hosted shared runners run in
privilegedmode to enable Docker-in-Docker, allowing jobs to build Docker images or run multiple containers inside the job environment.
Note that the virtual machine’s storage is shared with the operating system, pre-installed tools, and your project files.
GitLab-hosted runners on Linux
GitLab-hosted runners on Linux for GitLab Dedicated use the Docker Autoscaler executor. Each CI/CD job runs in a fully isolated, ephemeral virtual machine (VM), using the latest version of the Docker Engine.
To support diverse workloads and hardware environments, GitLab offers runners for the following architectures:
- Linux - ARM64
- Linux - x86-64
Based on the computing resources allocated to the GitLab-hosted runner, following are the variants available.
| Architecture | Size | Runner Tag | vCPUs | Memory | Storage |
|---|---|---|---|---|---|
| x86-64 | Small | linux-small-amd64 |
2 | 8 GB | 30 GB |
| x86-64 | Medium | linux-medium-amd64 |
4 | 16 GB | 50 GB |
| x86-64 | Large | linux-large-amd64 |
8 | 32 GB | 100 GB |
| ARM64 | Small | linux-small-arm64 |
2 | 8 GB | 30 GB |
Windows runners
SHIP-HATS supports multiple Windows runner images for different Visual Studio (VS) versions. Commonly used images include VS 2017, VS 2019, and VS 2022. For details, refer to VS versions and image tags.
If your CI pipeline depends on a specific VS version, be sure to update your runner configuration accordingly. For details, refer to Libraries.
If you do not specify an image version, by default, GitLab Windows runner will use VS 2022.
If your project requires a different image than those listed, you may also use a custom image.
VS versions and image tags
| Version Number | Image Tag |
|---|---|
| VS 2017 | registry.sgts.gitlab-dedicated.com/wog/gvt/ship/ship-2/gitlab-windows-docker:vs2017 |
| VS 2019 | registry.sgts.gitlab-dedicated.com/wog/gvt/ship/ship-2/gitlab-windows-docker:vs2019 |
| VS 2022 | registry.sgts.gitlab-dedicated.com/wog/gvt/ship/ship-2/gitlab-windows-docker:vs2022 |
Specify required image tag
Open the
gitlab-ci.ymlfile in your project.To use VS2019, add the following line in the image option:
image: registry.sgts.gitlab-dedicated.com/wog/gvt/ship/ship-2/gitlab-windows-docker:vs2019To use VS2017, add the following line in the image option:
image: registry.sgts.gitlab-dedicated.com/wog/gvt/ship/ship-2/gitlab-windows-docker:vs2017If you are using a version other than VS2022, ensure your project’s environment variables are corresponding to the VS image version you are using.
Libraries
Following section lists the paths to set the required libraries for your build.
| Component | Path |
|---|---|
| JAVA_HOME | C:\Program Files\OpenJDK\openjdk-11.0.15_10 |
JAVA_HOME for ship_windows_docker |
C:\Program Files\OpenJDK\jdk-21.0.2 |
| Git | C:\Program Files\Git |
| MSBuild17_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\bin |
| MSBuild16_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\bin |
| MSBuild15_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin |
| .NET SDK | C:\Windows\Microsoft.NET\Framework64\v4.0.30319 - v4 (64 bit) C:\Windows\Microsoft.NET\Framework\v4.0.30319 -v4(32 bit) |
| AppDeployment Toolkit | C:\PADT\Toolkit |
| VS2017_TEST_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2017\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow |
| VS2019_TEST_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2019\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow |
| VS2022_TEST_PATH | C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow |
| Microsoft VS Code | C:\Program Files\Microsoft VS Code |