SaaS runners on Windows (Beta) (FREE SAAS)

SaaS runner on Windows autoscale by launching virtual machines on the Google Cloud Platform. This solution uses an autoscaling driver developed by GitLab for the custom executor.

These SaaS runners are in Beta and aren't recomended for production workloads.

We want to keep iterating to get Windows runners in a stable state and generally available. You can follow our work towards this goal in the related epic.

Machine types available for Windows

Runner Tag vCPUs Memory Storage
shared-windows 2 7.5 GB 75 GB

Supported Windows versions

The Windows runner virtual machine instances do not use the GitLab Docker executor. This means that you can't specify image or services in your pipeline configuration. Instead you have to select the tags for the desired Windows version.

You can execute your job in one of the following Windows versions:

Version tag Status
windows-1809 maintenance

You can find a full list of available pre-installed software in the pre-installed software documentation.

NOTE: Each time you run a job that requires tooling or dependencies not available in the base image, those components must be installed to the newly provisioned VM increasing the total job duration.

Supported shell

SaaS runners on Windows have PowerShell configured as the shell. The script section of your .gitlab-ci.yml file therefore requires PowerShell commands.

Example .gitlab-ci.yml file

Below is a sample .gitlab-ci.yml file that shows how to start using the runners for Windows:

.shared_windows_runners:
  tags:
    - shared-windows
    - windows-1809

stages:
  - build
  - test

before_script:
 - Set-Variable -Name "time" -Value (date -Format "%H:%m")
 - echo ${time}
 - echo "started by ${GITLAB_USER_NAME}"

build:
  extends:
    - .shared_windows_runners
  stage: build
  script:
    - echo "running scripts in the build job"

test:
  extends:
    - .shared_windows_runners
  stage: test
  script:
    - echo "running scripts in the test job"

Limitations and known issues

  • All the limitations mentioned in our Beta definition.
  • The average provisioning time for a new Windows VM is 5 minutes. This means that you may notice slower build start times on the Windows runner fleet during the beta. In a future release we intend to update the autoscaler to enable the pre-provisioning of virtual machines. This is intended to significantly reduce the time it takes to provision a VM on the Windows fleet. You can follow along in the related issue.
  • The Windows runner fleet may be unavailable occasionally for maintenance or updates.
  • The job may stay in a pending state for longer than the Linux runners.
  • There is the possibility that we introduce breaking changes which will require updates to pipelines that are using the Windows runner fleet.