- 인프라
registry.gitlab.com/gitlab-org/ci-cd/tests/liveness
게시- 특정 Windows 버전을 지원하기 위해 GitLab Runner 업데이트
Windows 버전 지원을 위한 Docker 실행기 지원 추가
GitLab은 특정 Windows 버전을 지원합니다.
Docker 실행기에 대한 새로운 Windows 버전을 추가하려면
동일한 Windows 버전의 헬퍼 이미지를 릴리즈해야 합니다.
그런 다음 Windows 호스트 OS에서 헬퍼 이미지를 실행할 수 있습니다.
해당 버전의 헬퍼 이미지를 빌드하려면,
그 Windows 버전에서 GitLab Runner가 설치되어 있어야 합니다.
Windows는 호스트 OS와 컨테이너 OS 버전이 일치해야 합니다.
인프라
사용자 작업에 사용될 수 있도록 헬퍼 이미지를 빌드해야 합니다.
인프라에서 사용할 기본 이미지 생성
Windows는 호스트 OS 버전과 컨테이너 OS가 일치해야 하므로,
Windows Server Core 2004
이미지를 빌드하는 경우 Windows Server Core 2004
에
gitlab-runner
가 설치되어 있어야 합니다.
이를 위해
windows-containers
저장소를 업데이트하여 기본 이미지를 빌드해야 합니다.
기본 이미지는 우리의 CI를 위한 autoscaler에 의해 사용됩니다.
새로운 기본 이미지는 GitLab Runner 헬퍼 이미지를 빌드하는 데 사용됩니다.
예를 들어, 13.7 이정표에서 Windows Server Core 2004
에 대한 지원을 추가하고 싶다면
다음의 병합 요청을 확인할 수 있습니다.
GCP에서 제공하는 기본 이미지에 따라,
빌드 프로세스의 일환으로 Docker를 설치해야 할 수도 있습니다.
이 MR에서는 다음 파일을 업데이트합니다:
.gitlab-ci.yml
.gitlab/ci/build.gitlab-ci.yml
생성된 이미지 테스트
dev
단계에서 생성된 이미지를 테스트하는 것이 좋습니다.
이는 보통 dev xxx
라는 이름으로, 여기서 xxx
는 Windows 서버 버전을 나타냅니다.
이미지를 테스트하려면 다음 단계를 따를 수 있습니다:
-
GitLab Runner project
에서 새로운 Windows 서버 버전에 대한 지원을 추가하고,
gitlab-runner-helper.x86_64-windows.exe
바이너리를 생성합니다. -
dev
단계에서 생성된 디스크 이미지를 사용하여 VM을 생성합니다.
windows server ltsc2022
에 대한 지원을 추가할 때 디스크 이미지 이름은
runners-windows-21h1-core-containers-dev-40-mr
였습니다. - 이 VM에서
gitlab-runner-helper
Docker 이미지를 생성합니다.
이를 위해 VM에서gitlab-runner-helper.x86_64-windows.exe
바이너리를 다운로드해야 합니다.
Invoke-WebRequest
PowerShell 명령이 사용 불가능할 수 있으므로, 대신Start-BitsTransfer
명령을 사용해야 합니다. - 새 GCP Windows 서버 이미지를 사용하여 다른 VM을 생성합니다.
- 이전에 업데이트된
GitLab-Runner
프로젝트용으로 생성된gitlab-runner
실행 파일을 설치하고 이를 프로젝트에 등록합니다. - 작업을 성공적으로 시작합니다.
이 절차의 예시는 이 댓글에 요약되어 있습니다.
이미지를 게시하기
우리가 이전 단계에서 생성한 병합 요청을 병합하면, 이미지를 우리의 생산 GCP 프로젝트에 게시하기 위해 publish job을 수동으로 실행해야 합니다.
publish
job에서 생성된 이미지 이름을 기록해 두세요. 예를 들어, 이 job에서 runners-windows-2019-core-containers-2020-07-17
라는 이미지를 생성했습니다. 이는 설치 부분에 사용됩니다.
두 개의 새로운 러너 관리자 추가하기
이 시점에서 우리는 우리의 생산 환경에 베이스 이미지가 준비되어 있어야 하므로, GitLab Runner 프로젝트의 CI 파이프라인 안에서 사용할 수 있습니다. 남은 유일한 것은 러너 관리자 설정입니다.
등록
gitlab-runner register
을 실행하여 두 개의 새로운 러너를 등록합니다. 이들은 프로젝트별 러너여야 하므로, 프로젝트 설정에서 등록 토큰을 사용해야 합니다.
러너의 이름은 기존 러너와 동일한 명명 규칙을 따라야 합니다.
예를 들어, Windows Server Core 2004
의 경우, 러너 관리자의 이름을 다음과 같이 지정해야 합니다:
windows-2004-private-runner-manager-1
windows-2004-private-runner-manager-2
등록이 완료되면, 설치 단계에서 필요할 수 있으므로 config.toml
파일에서 러너 토큰을 안전하게 저장하세요.
마지막으로, 새로운 러너 관리자들을 보안 포크 프로젝트와 ‘생존’ 테스트 지원 프로젝트에 할당해야 합니다. 따라서 각 새로운 러너 관리자에 대해:
- 러너 프로젝트 CI/CD 설정 페이지의 러너 섹션으로 이동합니다;
- 속성을 편집하여
Lock to current projects
의 선택을 취소하여 새로운 러너를 잠금 해제합니다; -
보안 포크 프로젝트의 경우:
- 프로젝트의 CI/CD 설정 페이지로 이동합니다;
-
Other available runners
섹션으로 스크롤 다운하고 이 프로젝트의 러너를 활성화합니다;
-
‘생존’ 테스트 지원 프로젝트의 경우:
- 프로젝트의 CI/CD 설정 페이지로 이동합니다;
-
Other available runners
섹션으로 스크롤 다운하고 이 프로젝트의 러너를 활성화합니다;
- 러너 프로젝트 CI/CD 설정 페이지에서 러너를 다시 잠금합니다.
설치
특정 Windows 버전에 대한 config.toml
을 가지기 위해
autoscaler의 새 인스턴스를 설치합니다. 우리는
새 Windows 버전을 포함하도록 Ansible 리포지토리(https://ops.gitlab.net/gitlab-com/gl-infra/ci-infrastructure-windows
)를 업데이트해야 합니다.
예를 들어, 13.7 마일스톤에서 Windows Server Core 2004
지원을 추가하려면
다음의 병합 요청을 확인할 수 있습니다: https://ops.gitlab.net/gitlab-com/gl-infra/ci-infrastructure-windows/-/merge_requests/70
,
여기서 우리는 다음 파일을 업데이트합니다:
ansible/roles/runner/tasks/main.yml
ansible/roles/runner/tasks/autoscaler.yml
ansible/group_vars/gcp_role_runner_manager.yml
ansible/host_vars/windows-shared-runners-manager-1.yml
ansible/host_vars/windows-shared-runners-manager-2.yml
병합 요청을 열 때 유지 관리자가
그들이 ansible/host_vars
에 정의된 키로 CI/CD 변수에 2개의 새로운 러너를 등록해야 한다는 것을 인지하고 있는지 확인하세요.
registry.gitlab.com/gitlab-org/ci-cd/tests/liveness
게시
이미지 registry.gitlab.com/gitlab-org/ci-cd/tests/liveness
는
GitLab Runner를 위한 CI 프로세스의 일환으로 사용됩니다.
새 Windows 버전을 기반으로 한 이미지가 게시되었는지 확인하세요.
예를 들어, 13.7 마일스톤에서 Windows Server Core 2004
지원을 추가하려면
다음의 병합 요청을 확인할 수 있습니다,
여기서 우리는 다음 파일을 업데이트합니다:
.gitlab-ci.yml
Makefile
특정 Windows 버전을 지원하기 위해 GitLab Runner 업데이트
사용자가 Docker 실행기를 사용할 수 있도록 도와주는 이미지를 제공해야 하므로 코드베이스 내에 특정 체크가 있으며, 새 Windows 버전을 허용해야 합니다.
다음 사항을 업데이트해야 합니다:
- 지원 버전 목록 및 이를 둘러싼 테스트.
- 기본 이미지 목록 및 이를 둘러싼 테스트.
- 기본 브랜치에서 테스트 실행을 위한 GitLab CI 업데이트.
-
release
단계 업데이트.
예를 들어, 13.7 마일스톤에서 Windows Server Core 2004
지원을 추가하려면
다음의 병합 요청을 확인할 수 있습니다,
여기서 우리는 다음 파일을 업데이트합니다:
helpers/container/helperimage/windows_info.go
helpers/container/helperimage/windows_info_test.go
helpers/container/windows/version.go
helpers/container/windows/version_test.go
.gitlab/ci/test.gitlab-ci.yml
.gitlab/ci/coverage.gitlab-ci.yml
.gitlab/ci/_common.gitlab-ci.yml
.gitlab/ci/release.gitlab-ci.yml
ci/.test-failures.servercore2004.txt
docs/executors/docker.md