InfoGrab DocsInfoGrab Docs

Windows의 호스팅 러너

요약

Windows의 호스팅 러너는 Google Cloud Platform에서 가상 머신을 실행하여 자동 확장됩니다. GitLab은 Windows 러너를 안정적인 상태로 만들고 일반 사용 가능하게 하기 위해 계속 반복 작업을 진행하고 있습니다.

Windows의 호스팅 러너는 Google Cloud Platform에서 가상 머신을 실행하여 자동 확장됩니다. 이 솔루션은 커스텀 실행기를 위해 GitLab에서 개발한 자동 확장 드라이버를 사용합니다. Windows의 호스팅 러너는 베타 상태입니다.

GitLab은 Windows 러너를 안정적인 상태로 만들고 일반 사용 가능하게 하기 위해 계속 반복 작업을 진행하고 있습니다. 이 목표를 향한 작업은 관련 에픽에서 확인할 수 있습니다.

Windows에서 사용 가능한 머신 유형#

GitLab은 Windows의 호스팅 러너에 대해 다음 머신 유형을 제공합니다.

러너 태그 vCPU 메모리 스토리지
saas-windows-medium-amd64 2 7.5 GB 75 GB

지원되는 Windows 버전#

Windows 러너 가상 머신 인스턴스는 GitLab Docker 실행기를 사용하지 않습니다. 즉, 파이프라인 구성에서 image 또는 services를 지정할 수 없습니다.

이미지 빌드가 실행될 때 최신 Docker 버전이 설치되며, 셸 러너 job에서 리터럴 Docker 명령을 사용할 수 있습니다.

다음 Windows 버전 중 하나에서 job을 실행할 수 있습니다:

버전 상태
Windows 2022 GA

사용 가능한 런타임#

다음 파일에 사용 가능한 사전 설치 소프트웨어가 나열되어 있습니다:

Docker

.NET 런타임#

설치된 .NET Core SDK 버전과 특정 Visual Studio Build Tools 버전이 함께 사전 설치된 .NET 런타임 버전을 결정합니다.

다음 코드는 PowerShell Pipelines on GitLab CI에서 예약된 일정으로 실행되며 다음 예시 목록을 생성합니다:

세 가지 런타임(Microsoft.AspNetCore.App, Microsoft.NETCore.App, Microsoft.WindowsDesktop.App) 모두에 대해 사용 가능한 버전은 다음과 같습니다:

  • 3.1.32

  • 8.0.24

  • 9.0.13

.NET Framework은 버전 4.8.04161입니다.

현재 상태를 확인하려면 다음 코드를 실행하거나 PowerShell Pipelines on GitLab CI의 최근 로그를 확인하세요:

Write-Host "=== Modern .NET (Core 3.1, 5, 6, 7, 8+) runtimes ===" -ForegroundColor Cyan
if (Get-Command dotnet -ErrorAction SilentlyContinue) {
    dotnet --list-runtimes
} else {
    Write-Host "Not present"
}

Write-Host "`n=== .NET Framework versions ===" -ForegroundColor Cyan
$ndp = "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP"
if (Test-Path $ndp) {
    $found = Get-ChildItem $ndp -Recurse |
        Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue |
        Where-Object { $_.Version -and $_.PSChildName -notmatch '^S' } |
        Select-Object @{n='Component';e={$_.PSChildName}}, Version, Release |
        Sort-Object Version -Unique
    if ($found) { $found } else { Write-Host "Not present" }
} else {
    Write-Host "Not present"
}

Docker 런타임#

이미지 빌드가 실행될 때 최신 Docker 버전이 설치되며, 셸 러너 job에서 리터럴 Docker 명령을 사용할 수 있습니다.

버전을 확인하려면 다음 코드를 실행하거나 PowerShell Pipelines on GitLab CI의 파이프라인을 확인하세요:

      write-host "Docker client and service version:"
      docker version

지원되는 셸#

Windows의 호스팅 러너에는 셸로 PowerShell이 구성되어 있습니다. 따라서 .gitlab-ci.yml 파일의 script 섹션에는 PowerShell 명령이 필요합니다.

상승된 권한#

GitLab.com용 Windows의 호스팅 러너는 CI/CD job을 상승된 관리자 프로세스로 실행합니다. 이 프로세스를 통해 job 실행 전에 추가 소프트웨어를 설치하거나 OS를 구성할 수 있습니다. 러너는 개별 job마다 새 VM을 생성하고 job이 완료된 후 이를 폐기하므로 이 권한 수준은 허용됩니다. 이 프로세스는 보안 및 폐기 측면에서 컨테이너 job이 작동하는 방식과 본질적으로 동일합니다.

예시 .gitlab-ci.yml 파일#

이 예시 .gitlab-ci.yml 파일을 사용하여 Windows의 호스팅 러너를 시작합니다:

.windows_job:
  tags:
    - saas-windows-medium-amd64
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME} / @${GITLAB_USER_LOGIN}"

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

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

알려진 이슈#

  • 베타 기능 지원에 대한 자세한 내용은 베타를 참조하세요.
  • 새 Windows 가상 머신(VM)의 평균 프로비저닝 시간은 5분이므로 베타 기간 동안 Windows 러너 플릿에서 빌드의 시작 시간이 더 느릴 수 있습니다. 가상 머신의 사전 프로비저닝을 활성화하기 위해 자동 스케일러를 업데이트하는 것이 향후 릴리스에서 제안됩니다. 이 업데이트는 Windows 플릿에서 VM을 프로비저닝하는 데 걸리는 시간을 크게 줄이기 위한 것입니다. 자세한 내용은 이슈 32를 참조하세요.
  • Windows 러너 플릿은 유지 관리 또는 업데이트를 위해 가끔 사용 불가능할 수 있습니다.
  • job이 Linux 러너보다 더 오래 대기 상태로 유지될 수 있습니다.
  • Windows 러너 플릿을 사용하는 파이프라인을 업데이트해야 하는 호환성이 손상되는 변경 사항이 도입될 가능성이 있습니다.

Windows의 호스팅 러너

GitLab v19.2
Tier: Free, Premium, Ultimate
Offering: GitLab.com
원문 보기
요약

Windows의 호스팅 러너는 Google Cloud Platform에서 가상 머신을 실행하여 자동 확장됩니다. GitLab은 Windows 러너를 안정적인 상태로 만들고 일반 사용 가능하게 하기 위해 계속 반복 작업을 진행하고 있습니다.

Windows의 호스팅 러너는 Google Cloud Platform에서 가상 머신을 실행하여 자동 확장됩니다. 이 솔루션은 커스텀 실행기를 위해 GitLab에서 개발한 자동 확장 드라이버를 사용합니다. Windows의 호스팅 러너는 베타 상태입니다.

GitLab은 Windows 러너를 안정적인 상태로 만들고 일반 사용 가능하게 하기 위해 계속 반복 작업을 진행하고 있습니다. 이 목표를 향한 작업은 관련 에픽에서 확인할 수 있습니다.

Windows에서 사용 가능한 머신 유형#

GitLab은 Windows의 호스팅 러너에 대해 다음 머신 유형을 제공합니다.

러너 태그 vCPU 메모리 스토리지
saas-windows-medium-amd64 2 7.5 GB 75 GB

지원되는 Windows 버전#

Windows 러너 가상 머신 인스턴스는 GitLab Docker 실행기를 사용하지 않습니다. 즉, 파이프라인 구성에서 image 또는 services를 지정할 수 없습니다.

이미지 빌드가 실행될 때 최신 Docker 버전이 설치되며, 셸 러너 job에서 리터럴 Docker 명령을 사용할 수 있습니다.

다음 Windows 버전 중 하나에서 job을 실행할 수 있습니다:

버전 상태
Windows 2022 GA

사용 가능한 런타임#

다음 파일에 사용 가능한 사전 설치 소프트웨어가 나열되어 있습니다:

Docker

.NET 런타임#

설치된 .NET Core SDK 버전과 특정 Visual Studio Build Tools 버전이 함께 사전 설치된 .NET 런타임 버전을 결정합니다.

다음 코드는 PowerShell Pipelines on GitLab CI에서 예약된 일정으로 실행되며 다음 예시 목록을 생성합니다:

세 가지 런타임(Microsoft.AspNetCore.App, Microsoft.NETCore.App, Microsoft.WindowsDesktop.App) 모두에 대해 사용 가능한 버전은 다음과 같습니다:

  • 3.1.32

  • 8.0.24

  • 9.0.13

.NET Framework은 버전 4.8.04161입니다.

현재 상태를 확인하려면 다음 코드를 실행하거나 PowerShell Pipelines on GitLab CI의 최근 로그를 확인하세요:

Write-Host "=== Modern .NET (Core 3.1, 5, 6, 7, 8+) runtimes ===" -ForegroundColor Cyan
if (Get-Command dotnet -ErrorAction SilentlyContinue) {
    dotnet --list-runtimes
} else {
    Write-Host "Not present"
}

Write-Host "`n=== .NET Framework versions ===" -ForegroundColor Cyan
$ndp = "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP"
if (Test-Path $ndp) {
    $found = Get-ChildItem $ndp -Recurse |
        Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue |
        Where-Object { $_.Version -and $_.PSChildName -notmatch '^S' } |
        Select-Object @{n='Component';e={$_.PSChildName}}, Version, Release |
        Sort-Object Version -Unique
    if ($found) { $found } else { Write-Host "Not present" }
} else {
    Write-Host "Not present"
}

Docker 런타임#

이미지 빌드가 실행될 때 최신 Docker 버전이 설치되며, 셸 러너 job에서 리터럴 Docker 명령을 사용할 수 있습니다.

버전을 확인하려면 다음 코드를 실행하거나 PowerShell Pipelines on GitLab CI의 파이프라인을 확인하세요:

      write-host "Docker client and service version:"
      docker version

지원되는 셸#

Windows의 호스팅 러너에는 셸로 PowerShell이 구성되어 있습니다. 따라서 .gitlab-ci.yml 파일의 script 섹션에는 PowerShell 명령이 필요합니다.

상승된 권한#

GitLab.com용 Windows의 호스팅 러너는 CI/CD job을 상승된 관리자 프로세스로 실행합니다. 이 프로세스를 통해 job 실행 전에 추가 소프트웨어를 설치하거나 OS를 구성할 수 있습니다. 러너는 개별 job마다 새 VM을 생성하고 job이 완료된 후 이를 폐기하므로 이 권한 수준은 허용됩니다. 이 프로세스는 보안 및 폐기 측면에서 컨테이너 job이 작동하는 방식과 본질적으로 동일합니다.

예시 .gitlab-ci.yml 파일#

이 예시 .gitlab-ci.yml 파일을 사용하여 Windows의 호스팅 러너를 시작합니다:

.windows_job:
  tags:
    - saas-windows-medium-amd64
  before_script:
    - Set-Variable -Name "time" -Value (date -Format "%H:%m")
    - echo ${time}
    - echo "started by ${GITLAB_USER_NAME} / @${GITLAB_USER_LOGIN}"

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

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

알려진 이슈#

  • 베타 기능 지원에 대한 자세한 내용은 베타를 참조하세요.
  • 새 Windows 가상 머신(VM)의 평균 프로비저닝 시간은 5분이므로 베타 기간 동안 Windows 러너 플릿에서 빌드의 시작 시간이 더 느릴 수 있습니다. 가상 머신의 사전 프로비저닝을 활성화하기 위해 자동 스케일러를 업데이트하는 것이 향후 릴리스에서 제안됩니다. 이 업데이트는 Windows 플릿에서 VM을 프로비저닝하는 데 걸리는 시간을 크게 줄이기 위한 것입니다. 자세한 내용은 이슈 32를 참조하세요.
  • Windows 러너 플릿은 유지 관리 또는 업데이트를 위해 가끔 사용 불가능할 수 있습니다.
  • job이 Linux 러너보다 더 오래 대기 상태로 유지될 수 있습니다.
  • Windows 러너 플릿을 사용하는 파이프라인을 업데이트해야 하는 호환성이 손상되는 변경 사항이 도입될 가능성이 있습니다.