GitLab_가이드

Windows에 GitLab Runner 설치

구일칠구 2022. 8. 3. 16:44

Windows에 GitLab Runner 설치

Windows에서 GitLab Runner를 설치하고 실행하려면 다음이 필요합니다.

  • 공식 사이트 에서 설치할 수 있는 Git
  • 기본 제공 시스템 계정이 아닌 사용자 계정으로 실행하려는 경우 사용자 계정의 비밀번호입니다.

설치

GitLab Runner 10에서는 실행 파일의 이름이 gitlab-runner. GitLab Runner 10 이전 버전을 설치하려면 이전 문서를 방문하세요 .
  1. 시스템 어딘가에 폴더를 만드십시오(예: C:\GitLab-Runner.
  2. 64비트 또는 32 비트 용 바이너리를 다운로드하여 생성한 폴더에 넣습니다. 다음은 바이너리 이름을 gitlab-runner.exe(선택 사항)으로 변경했다고 가정합니다. Bleeding Edge 에 설명된 대로 사용 가능한 모든 버전에 대한 바이너리를 다운로드할 수 있습니다 . 다른 태그가 있는 릴리스 다운로드 .
  3. WriteGitLab Runner 디렉터리 및 실행 파일에 대한 권한을 제한해야 합니다 . 이러한 권한을 설정하지 않으면 일반 사용자가 실행 파일을 자신의 것으로 교체하고 상승된 권한으로 임의의 코드를 실행할 수 있습니다.
  4. 관리자 권한 명령 프롬프트 를 실행 합니다 .
  5. 주자 등록 .
  6. GitLab Runner를 서비스로 설치하고 시작합니다. 기본 제공 시스템 계정(권장) 또는 사용자 계정을 사용하여 서비스를 실행할 수 있습니다.
    cd C:\GitLab-Runner
            .\gitlab-runner.exe install
            .\gitlab-runner.exe start
            
    사용자 계정을 사용하여 서비스 실행 (위에서 1단계에서 생성한 디렉토리 아래, 예: C:\GitLab-Runner)
    cd C:\GitLab-Runner
            .\gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
            .\gitlab-runner.exe start
            
    GitLab Runner 설치 중 오류가 발생하면 문제 해결 섹션 을 참조하십시오 .
  7. 현재 사용자 계정에 유효한 암호를 입력해야 합니다. Windows에서 서비스를 시작하는 데 필요하기 때문입니다.
  8. 내장 시스템 계정을 사용하여 서비스 실행 (위에서 1단계에서 생성된 디렉토리 아래, 예: C:\GitLab-Runner)
  9. (선택 사항) 고급 구성 세부 정보 에 자세히 설명된 대로 여러 동시 작업을 허용하도록 의 실행기 concurrent값을 업데이트합니다 . 또한 고급 구성 세부 정보를 사용하여 Batch가 아닌 Bash 또는 PowerShell을 사용하도록 셸 실행기를 업데이트할 수 있습니다. C:\GitLab-Runner\config.toml

짜잔! Runner가 설치되어 실행 중이며 각 시스템 재부팅 후 다시 시작됩니다. 로그는 Windows 이벤트 로그에 저장됩니다.

업데이트

  1. 서비스를 중지합니다( 이전과 같이 관리자 권한 명령 프롬프트 가 필요함 ).
  2. cd C:\GitLab-Runner
          .\gitlab-runner.exe stop
          
  3. 64비트 또는 32 비트 용 바이너리를 다운로드하고 실행 파일을 교체하십시오. Bleeding Edge 에 설명된 대로 사용 가능한 모든 버전에 대한 바이너리를 다운로드할 수 있습니다 . 다른 태그가 있는 릴리스 다운로드 .
  4. 서비스 시작:
  5. .\gitlab-runner.exe start
          

제거

관리자 권한 명령 프롬프트 에서 :

cd C:\GitLab-Runner
    .\gitlab-runner.exe stop
    .\gitlab-runner.exe uninstall
    cd ..
    rmdir /s GitLab-Runner
    

Windows 버전 지원 정책

Microsoft 서비스 채널 과 동일한 수명 주기 정책을 따릅니다 .

이것은 우리가 다음을 지원한다는 것을 의미합니다:

  • 장기 서비스 채널 , 릴리스 날짜 이후 5년 동안의 버전입니다. 확장 지원 버전은 지원하지 않습니다.
  • 출시일로부터 18개월 동안 반기 채널 버전. 주류 지원이 종료된 후에는 이러한 버전을 지원하지 않습니다.

이것은 우리가 배포 하는 Windows 바이너리 와 Docker 실행기 모두에 해당 됩니다.

Windows 컨테이너용 Docker 실행기는 컨테이너가 호스트 OS 버전과 일치해야 하므로 엄격한 버전 요구 사항이 있습니다. 자세한 내용 은 지원되는 Windows 컨테이너 목록을 참조 하세요.

Windows 버전이 더 이상 Microsoft의 주요 지원을 받지 못하면 공식적으로 해당 버전 을 사용하지 않으며 다음 주요 변경에서 제거합니다. 예를 들어 12.x에서 Windows 1803 에 나왔기 때문에 지원을 시작했습니다 2018-04-30. 메인스트림 지원이 에 종료 되었으므로 12.x에서 2019-11-12더 이상 사용되지 않으며 GitLab 13.0에서 제거 되었습니다.Windows 1803

단일 출처로서 릴리스 및 기본 지원 날짜를 모두 지정 하는 https://docs.microsoft.com/en-us/lifecycle/products/ 를 사용합니다.

다음은 일반적으로 사용되는 버전 목록과 수명 종료 날짜입니다.

OS메인스트림 지원 수명 종료 날짜

윈도우 10 1809/2019 2024년 1월
Windows 서버 데이터 센터 1809/2019 2024년 1월
Windows 서버 데이터 센터 1903 2020년 12월

향후 릴리스

Microsoft는 반기 채널 에서 새로운 Windows Server 제품을 1년에 두 번 출시하고 2~3년마다 LTSC(장기 서비스 채널) 에서 Windows Sever의 새로운 주요 버전을 출시합니다 .

GitLab은 최신 Windows Server 버전(반기 채널)이 포함된 새로운 GitLab Runner 도우미 이미지를 Google Cloud Platform에서 Microsoft 공식 출시일로부터 1개월 이내에 테스트 및 출시하는 것을 목표로 합니다. 사용 가능 날짜 는 서비스 옵션 목록별 Windows Server 현재 버전을 참조하십시오 .

Windows 문제 해결

GitLab Runner와 관련된 가장 일반적인 문제에 대해 설명 하는 FAQ 섹션 을 반드시 읽으십시오 .

계정 이름이 올바르지 않음 과 같은 오류가 발생하면 .\사용자 이름 앞에 다음 을 추가 하십시오.

.\gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
    

서비스 시작 중 로그온 실패 오류 로 인해 서비스가 시작되지 않는 경우 , FAQ 에서 문제 해결 방법을 확인하시기 바랍니다.

Windows 암호가 없으면 GitLab Runner 서비스가 시작되지 않지만 기본 제공 시스템 계정을 사용할 수 있습니다.

기본 제공 시스템 계정에 문제가 있는 경우 Microsoft 지원 웹 사이트 에서 기본 제공 시스템 계정으로 시작하도록 서비스 구성을 읽으 십시오.

러너 로그 가져오기

실행하면 Windows 서비스로 .\gitlab-runner.exe install설치 됩니다. gitlab-runner이벤트 뷰어에서 공급자 이름으로 로그를 찾을 수 있습니다 gitlab-runner.

GUI에 액세스할 수 없는 경우 PowerShell에서 Get-WinEvent.

PS C:\> Get-WinEvent -ProviderName gitlab-runner
    
    ProviderName: gitlab-runner
    
    TimeCreated                     Id LevelDisplayName Message
    -----------                     -- ---------------- -------
    2/4/2021 6:20:14 AM              1 Information      [session_server].listen_address not defined, session endpoints disabled  builds=0...
    2/4/2021 6:20:14 AM              1 Information      listen_address not defined, metrics & debug endpoints disabled  builds=0...
    2/4/2021 6:20:14 AM              1 Information      Configuration loaded                                builds=0...
    2/4/2021 6:20:14 AM              1 Information      Starting multi-runner from C:\config.toml...        builds=0...
    

Windows에서 빌드하는 동안 PathTooLongException이 발생합니다.

npm이는 때때로 길이가 260자를 초과하는 경로의 디렉토리 구조를 생성하는 도구로 인해 발생합니다 . 문제를 해결하기 위해 채택할 수 있는 두 가지 가능한 수정 사항이 있습니다.

a) core.longpaths가 활성화된 상태에서 Git 사용

Git을 사용하여 디렉터리 구조를 정리하고 먼저 git config --system core.longpaths true명령줄에서 실행한 다음 git fetchGitLab CI 프로젝트 설정 페이지에서 사용할 프로젝트를 설정하면 문제를 피할 수 있습니다.

b) PowerShell용 NTFSSecurity 도구 사용

NTFSSecurity PowerShell 모듈은 긴 경로를 지원하는 Remove - Item2 메서드를 제공합니다. GitLab Runner는 사용 가능한 경우 이를 감지하고 자동으로 사용합니다.

Windows BASH 스크립트를 실행할 수 없습니다. 나는 점점The system cannot find the batch label specified - buildscript

처럼 보이도록 call배치 파일 행 앞에 추가해야 합니다 . 다음은 보다 완전한 예입니다. .gitlab-ci.ymlcall C:\path\to\test.bat

before_script:
    - call C:\path\to\test.bat
    

추가 정보는 문제 #1025 에서 찾을 수 있습니다 .

웹 터미널에서 컬러 출력을 얻으려면 어떻게 해야 합니까?

짧은 답변:

프로그램 출력에 ANSI 색상 코드가 있는지 확인하십시오. 텍스트 형식 지정을 위해 UNIX ANSI 터미널 에뮬레이터에서 실행 중이라고 가정합니다(webUI의 출력이 바로 이것이기 때문입니다).

긴 답변:

GitLab CI용 웹 인터페이스는 UNIX ANSI 터미널(적어도 부분적으로)을 에뮬레이트합니다. 빌드 의 gitlab-runner모든 출력을 웹 인터페이스로 직접 파이프합니다. 즉, 존재하는 모든 ANSI 색상 코드가 적용됩니다.

이전 버전의 Windows CMD 터미널(Win10 버전 1511 이전)은 ANSI 색상 코드를 지원하지 않습니다 . 대신 표시할 문자열에 없는ANSI.SYS win32( ) 호출을 사용 합니다. 크로스 플랫폼 프로그램을 작성할 때 개발자는 일반적으로 기본적으로 ANSI 색상 코드를 사용하고 Windows 시스템(예: Colorama )에서 실행할 때 win32 호출로 변환합니다.

프로그램이 위의 작업을 수행하는 경우 ANSI 코드가 문자열에 남아 있도록 CI 빌드에 대해 해당 변환을 비활성화해야 합니다.

PowerShell 사용 예는 GitLab CI YAML 문서 를 참조 하고 자세한 내용은 문제 #332 를 참조하세요.

The service did not start due to a logon failure 서비스 시작 시 오류

Windows에서 GitLab Runner 서비스를 설치하고 시작할 때 다음과 같은 오류가 발생할 수 있습니다.

gitlab-runner install --password WINDOWS_MACHINE_PASSWORD
    gitlab-runner start
    FATA[0000] Failed to start GitLab Runner: The service did not start due to a logon failure.
    

SeServiceLogonRight이 오류는 서비스를 실행한 사용자에게 권한 이 없을 때 발생할 수 있습니다 . 이 경우 선택한 사용자에 대해 이 권한을 추가한 다음 서비스를 다시 시작해야 합니다.

  1. 제어판 > 시스템 및 보안 > 관리 도구 로 이동 합니다.
  2. 로컬 보안 정책 도구를 엽니다 .
  3. 왼쪽 목록에서 보안 설정 > 로컬 정책 > 사용자 권한 할당 을 선택합니다 .
  4. 오른쪽 목록에서 서비스로 로그온을 엽니다 .
  5. 사용자 또는 그룹 추가… 버튼을 클릭합니다 .
  6. 사용자를 추가하고("손으로" 또는 고급… 버튼 사용) 설정을 적용합니다.

Microsoft 설명서 에 따르면 Windows Vista, Windows Server 2008, Windows 7, Windows 8.1, Windows Server 2008 R2, Windows Server 2012 R2, Windows Server 2012 및 Windows 8에서 작동해야 합니다.

로컬 보안 정책 도구 는 일부 Windows 버전(예: 각 버전의 "홈 에디션" 변형)에서 사용하지 못할 수 있습니다.

서비스 설정에서 사용하는 사용자에 대해 추가한 후 SeServiceLogonRight, 명령어 gitlab-runner start는 실패 없이 종료되어야 하고 서비스는 정상적으로 시작되어야 한다.

성공 또는 실패로 잘못 표시된 작업

대부분의 Windows 프로그램 exit code 0은 성공을 위해 출력합니다. 그러나 일부 프로그램은 종료 코드를 반환하지 않거나 다른 성공 값을 갖습니다. Windows 도구가 그 예입니다 robocopy. 다음 .gitlab-ci.yml은 성공해야 하지만 에 의해 출력된 종료 코드로 인해 실패합니다 robocopy.

test:
    stage: test
    script:
    - New-Item -type Directory -Path ./source
    - New-Item -type Directory -Path ./dest
    - Write-Output "Hello World!" > ./source/file.txt
    - robocopy ./source ./dest
    tags:
    - windows
    

위의 경우 종료 코드 검사를 수동으로 추가해야 합니다 script:. 예를 들어 powershell 스크립트를 만들 수 있습니다.

$exitCodes = 0,1
    
    robocopy ./source ./dest
    
    if ( $exitCodes.Contains($LastExitCode) ) {
    exit 0
    } else {
    exit 1
    }
    

그리고 .gitlab-ci.yml파일을 다음 과 같이 변경합니다.

test:
    stage: test
    script:
    - New-Item -type Directory -Path ./source
    - New-Item -type Directory -Path ./dest
    - Write-Output "Hello World!" > ./source/file.txt
    - ./robocopyCommand.ps1
    tags:
    - windows
    

또한 PowerShell 기능을 사용할 때 return와 사용할 때 의 차이점에 주의하십시오 . exit동안 exit 1은 작업을 실패한 것으로 표시하지만 은(는) return 1하지 않습니다 .

Kubernetes 실행기를 사용하여 작업이 성공으로 표시되고 중간에 종료됨

작업 실행 을 참조하십시오 .

도커 실행기: unsupported Windows Version

GitLab Runner는 Windows Server 버전을 확인하여 지원되는지 확인합니다.

이것은 실행하여 수행 docker info합니다.

GitLab Runner가 다음 오류와 함께 시작되지 않았지만 Windows Server 버전이 지정되지 않은 경우 근본 원인은 Docker 버전이 너무 오래되었기 때문일 수 있습니다.

Preparation failed: detecting base image: unsupported Windows Version: Windows Server Datacenter
    

오류에는 Windows Server 버전에 대한 자세한 정보가 포함되어야 하며, 이 정보는 GitLab Runner가 지원하는 버전과 비교됩니다.

unsupported Windows Version: Windows Server Datacenter Version (OS Build 18363.720)
    

Windows Server의 Docker 17.06.2는 의 출력에서 ​​다음을 반환합니다 docker info.

Operating System: Windows Server Datacenter
    

이 경우 수정 사항은 Windows Server 릴리스와 유사하거나 그 이후 버전의 Docker 버전을 업그레이드하는 것입니다.

매핑된 네트워크 드라이브를 사용하고 있으며 빌드에서 올바른 경로를 찾을 수 없습니다.

GitLab Runner가 관리자 계정으로 실행되지 않고 대신 표준 사용자 계정을 사용하는 경우 매핑된 네트워크 드라이브를 사용할 수 없으며 The system cannot find the path specified.서비스 로그온 세션을 사용하면 보안을 위해 리소스에 액세스 하는 데 몇 가지 제한 이 발생하기 때문이라는 오류가 표시됩니다. . 대신 드라이브 UNC 경로 를 사용하십시오.

빌드 컨테이너가 서비스 컨테이너에 연결할 수 없습니다.

Windows 컨테이너에서 서비스를 사용하려면:

  • 각 작업에 대해 네트워크를 생성하는 네트워킹 모드를 사용하십시오 .
  • FF_NETWORK_PER_BUILD기능 플래그가 활성화 되어 있는지 확인합니다 .

'GitLab_가이드' 카테고리의 다른 글

Community Edition을 Enterprise Edition으로 변환  (0) 2022.08.03
GNU/Linux에 GitLab Runner 수동 설치  (0) 2022.08.03
macOS에 GitLab Runner 설치  (0) 2022.08.03
RBAC 지원 활성화  (0) 2022.08.03
GitLab 러너 투구 차트  (0) 2022.08.02