- 환경 변수 사용
- 디버그 모드에서 실행
- 슈퍼-사용자 권한
- 구성 파일
- 시그널
- 명령 개요
- 등록 관련 명령어
- 서비스 관련 명령어
- Run 관련 명령어
- 내부 명령어
- 문제 해결
-
gitlab-runner stop
실행 시 우아하게 종료되지 않음
GitLab Runner commands
GitLab Runner에는 등록, 관리 및 빌드 실행에 사용하는 일련의 명령이 포함되어 있습니다.
아래와 같이 명령어 목록을 확인할 수 있습니다.
gitlab-runner --help
명령 뒤에 --help
를 붙여서 명령의 특정 도움말 페이지를 볼 수 있습니다.
gitlab-runner <명령> --help
환경 변수 사용
대부분의 명령은 구성을 전달하는 방법으로 환경 변수를 지원합니다.
특정 명령에 대한 --help
작업을 실행할 때 환경 변수의 이름을 볼 수 있습니다. 예를 들어 run
명령에 대한 도움말 메시지를 아래에서 볼 수 있습니다.
gitlab-runner run --help
출력은 다음과 유사합니다.
NAME:
gitlab-runner run - run multi runner service
USAGE:
gitlab-runner run [command options] [arguments...]
OPTIONS:
-c, --config "/Users/ayufan/.gitlab-runner/config.toml" Config file [$CONFIG_FILE]
디버그 모드에서 실행
디버그 모드는 일부 정의되지 않은 동작이나 오류의 원인을 찾을 때 특히 유용합니다.
명령을 디버그 모드에서 실행하려면 명령 앞에 --debug
를 추가하십시오.
gitlab-runner --debug <command>
슈퍼-사용자 권한
GitLab Runner의 구성에 액세스하는 명령은 root
로 실행되는 경우 다르게 작동합니다. 파일 위치는 명령을 실행하는 사용자에 따라 달라집니다.
gitlab-runner
명령을 실행하면 실행 모드가 표시됩니다.
$ gitlab-runner run
INFO[0000] Starting multi-runner from /Users/ayufan/.gitlab-runner/config.toml ... builds=0
WARN[0000] Running in user-mode.
WARN[0000] Use sudo for system-mode:
WARN[0000] $ sudo gitlab-runner...
원하는 모드가 사용자 모드인 경우 user-mode
를 사용해야 합니다. 그렇지 않은 경우 명령에 sudo
를 접두어로 붙이십시오.
$ sudo gitlab-runner run
INFO[0000] Starting multi-runner from /etc/gitlab-runner/config.toml ... builds=0
INFO[0000] Running in system-mode.
Windows의 경우 관리자 권한으로 명령 프롬프트를 실행해야 할 수 있습니다.
구성 파일
GitLab Runner 구성은 TOML 형식을 사용합니다.
편집할 파일 위치를 찾을 수 있습니다.
- GitLab Runner가
root
로 실행되는 *nix 시스템의 경우:/etc/gitlab-runner/config.toml
- GitLab Runner가 루트가 아닌 사용자로 실행되는 *nix 시스템의 경우:
~/.gitlab-runner/config.toml
- 다른 시스템의 경우:
./config.toml
대부분의 명령은 사용자 지정 구성 파일을 지정하는 인수를 허용하므로 한 대상 장치에 여러 가지 다른 구성을 가질 수 있습니다. 사용자 정의 구성 파일을 지정하려면 -c
또는 --config
플래그를 사용하거나 CONFIG_FILE
환경 변수를 사용하십시오.
시그널
시스템 시그널을 사용하여 GitLab Runner와 상호 작용할 수 있습니다. 다음 명령이 다음 시그널을 지원합니다.
명령 | 시그널 | 동작 |
---|---|---|
register
| SIGINT | 등록된 러너 등록을 취소하고 이미 등록되어 있으면 삭제합니다. |
run , run-single
| SIGINT, SIGTERM | 실행 중인 모든 빌드를 중단하고 가능한 빨리 종료합니다. 두 번 사용하여 즉시 종료합니다 (강제 종료). |
run , run-single
| SIGQUIT | 새로운 빌드를 수락하지 않음. 현재 실행 중인 빌드가 완료될 때까지 종료합니다 (정상 종료). |
run
| SIGHUP | 구성 파일을 다시로드합니다. |
예를 들어, 러너의 구성 파일을 강제로 다시로드하려면 다음을 실행하십시오.
sudo kill -SIGHUP <main_runner_pid>
정상 종료를 위해:
sudo kill -SIGQUIT <main_runner_pid>
경고: shell
또는 docker
executor를 사용하는 경우 killall
또는 pkill
을 사용하지 마십시오. 이로 인해 하위 프로세스가 같이 종료되어 신호가 제대로 처리되지 않을 수 있습니다.
서비스가 실패하면 (일부 플랫폼이 기본값으로 사용하는 것) 자동으로 다시 시작하도록 운영 체제가 구성되어 있는 경우 위의 신호에 의해 종료된 경우 자동으로 다시 시작될 수 있습니다.
명령 개요
아래와 같이 gitlab-runner
를 인수 없이 실행하면 다음을 볼 수 있습니다.
NAME:
gitlab-runner - a GitLab Runner
USAGE:
gitlab-runner [global options] command [command options] [arguments...]
VERSION:
16.5.0 (853330f9)
AUTHOR:
GitLab Inc. <support@gitlab.com>
COMMANDS:
list List all configured runners
run run multi runner service
register register a new runner
reset-token reset a runner's token
install install service
uninstall uninstall service
start start service
stop stop service
restart restart service
status get status of a service
run-single start single runner
unregister unregister specific runner
verify verify all registered runners
artifacts-downloader download and extract build artifacts (internal)
artifacts-uploader create and upload build artifacts (internal)
cache-archiver create and upload cache artifacts (internal)
cache-extractor download and extract cache artifacts (internal)
cache-init changed permissions for cache paths (internal)
health-check check health for a specific address
read-logs reads job logs from a file, used by kubernetes executor (internal)
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--cpuprofile value write cpu profile to file [$CPU_PROFILE]
--debug debug mode [$RUNNER_DEBUG]
--log-format value Choose log format (options: runner, text, json) [$LOG_FORMAT]
--log-level value, -l value Log level (options: debug, info, warn, error, fatal, panic) [$LOG_LEVEL]
--help, -h show help
--version, -v print the version
등록 관련 명령어
새 러너를 등록하거나 등록된 러너 목록을 확인하고 확인하는 데 사용하는 다음 명령어를 사용하세요.
이러한 명령어는 다음과 같은 인수를 지원합니다:
매개변수 | 기본값 | 설명 |
---|---|---|
--config
| 구성 파일 섹션 참조 | 사용할 사용자 정의 구성 파일 지정 |
gitlab-runner register
이 명령어는 GitLab Runners API를 사용하여 GitLab에 러너를 등록합니다.
등록된 러너는 구성 파일에 추가됩니다.
GitLab Runner의 단일 설치에서 여러 구성을 사용할 수 있습니다. gitlab-runner register
를 실행하면 새 구성 항목이 추가됩니다. 기존 항목은 제거되지 않습니다.
런너를 등록하는 두 가지 옵션이 있습니다:
- 대화형.
- 비대화형.
참고: 러너는 직접 GitLab Runners API를 사용하여 등록할 수 있지만, 구성은 자동으로 생성되지 않습니다.
대화형 등록
이 명령은 일반적으로 대화형 모드(기본값)로 사용됩니다. 러너 등록 중에 여러 질문을 받습니다.
이 질문은 등록 명령을 호출할 때 인수를 추가하여 미리 채울 수 있습니다:
gitlab-runner register --name my-runner --url "http://gitlab.example.com" --token my-authentication-token
또는 register
명령 전에 환경 변수를 구성하여:
export CI_SERVER_URL=http://gitlab.example.com
export RUNNER_NAME=my-runner
export CI_SERVER_TOKEN=my-authentication-token
gitlab-runner register
모든 가능한 인수 및 환경을 확인하려면 다음을 실행합니다:
gitlab-runner register --help
비대화형 등록
비대화형 / 무인 형식으로 등록을 사용할 수 있습니다.
등록 명령을 호출할 때 인수를 지정할 수 있습니다:
gitlab-runner register --non-interactive <other-arguments>
또는 register
명령 전에 환경 변수를 구성하여:
<다른 환경 변수>
export REGISTER_NON_INTERACTIVE=true
gitlab-runner register
참고:
참/거짓 매개변수는 명령줄에서 --key={true|false}
와 같이 전달되어야 합니다.
[[runners]]
구성 템플릿 파일
구성 템플릿 파일 기능을 사용하여 러너 등록 중에 추가 옵션을 쉽게 구성할 수 있습니다.
gitlab-runner list
이 명령은 구성 파일에 저장된 모든 러너를 나열합니다.
gitlab-runner verify
이 명령은 등록된 러너가 GitLab에 연결될 수 있는지 확인하지만, 러너가 GitLab Runner 서비스에서 사용 중인지는 확인하지 않습니다. 예시 출력은 다음과 같습니다:
러너 확인 중... 활성 상태입니다 runner=fee9938e
러너 확인 중... 활성 상태입니다 runner=0db52b31
러너 확인 중... 활성 상태입니다 runner=826f687f
러너 확인 중... 활성 상태입니다 runner=32773c0f
GitLab에서 제거된 이전 러너를 제거하려면 다음 명령을 실행합니다.
경고:
이 작업은 되돌릴 수 없습니다. 이는 구성 파일을 업데이트하므로 실행하기 전에 config.toml
을 백업했는지 확인하세요.
gitlab-runner verify --delete
gitlab-runner unregister
이 명령은 GitLab Runners API를 사용하여 등록된 러너의 등록을 취소합니다.
다음 중 하나를 예상합니다:
- 전체 URL 및 러너 토큰.
- 러너의 이름.
--all-runners
옵션과 함께 사용하면 모든 연결된 러너를 등록 취소합니다.
참고: 러너는 GitLab Runners API를 사용하여 등록 취소할 수 있지만, 사용자의 구성은 수정되지 않습니다.
- 러너가 러너 등록 토큰으로 생성된 경우,
gitlab-runner unregister
와 러너 인증 토큰을 사용하여 러너를 삭제합니다. - 러너가 GitLab UI에서 생성되었거나 Runners API로 생성된 경우,
gitlab-runner unregister
와 러너 인증 토큰을 사용하여 러너 관리자를 삭제하지만 러너는 삭제되지 않습니다. 러너를 완전히 제거하려면 러너 관리 페이지에서 러너를 삭제하거나DELETE /runners
REST API 엔드포인트를 사용하세요.
단일 러너의 등록을 취소하려면 먼저 gitlab-runner list
를 실행하여 러너 세부 정보를 가져옵니다:
test-runner Executor=shell Token=t0k3n URL=http://gitlab.example.com
그런 다음 다음 명령 중 하나로 정보를 사용하여 등록을 취소합니다.
경고:
이 작업은 되돌릴 수 없습니다. 이는 구성 파일을 업데이트하므로 실행하기 전에 config.toml
을 백업했는지 확인하세요.
URL 및 토큰으로
gitlab-runner unregister --url "http://gitlab.example.com/" --token t0k3n
이름으로
gitlab-runner unregister --name test-runner
참고: 주어진 이름으로 러너가 여러 개 있다면 첫 번째 러너만 제거됩니다.
모든 러너에
gitlab-runner unregister --all-runners
gitlab-runner reset-token
이 명령은 러너 ID 또는 현재 토큰](https://docs.gitlab.com/ee/api/runners.html#reset-runners-authentication-token-by-using-the-current-token)을 사용하여 GitLab Runners API를 통해 러너의 토큰을 재설정합니다.
러너의 이름(또는 URL 및 ID)과 선택적으로 토큰을 사용하는 경우 PAT가 필요합니다.
--all-runners
옵션과 함께 사용하면 모든 연결된 러너의 토큰을 재설정합니다.
Runner의 현재 토큰을 사용하여
gitlab-runner reset-token --name test-runner
PAT 및 Runner 이름 사용
gitlab-runner reset-token --name test-runner --pat PaT
PAT, GitLab URL 및 Runner ID 사용
gitlab-runner reset-token --url "https://gitlab.example.com/" --id 12345 --pat PaT
모든 Runners
gitlab-runners reset-token --all-runners
서비스 관련 명령어
다음 명령어를 사용하여 시스템 또는 사용자 서비스로 Runner를 관리할 수 있습니다. 이들을 사용하여 Runner 서비스를 설치, 제거, 시작 및 중지할 수 있습니다.
gitlab-runner install
gitlab-runner uninstall
gitlab-runner start
gitlab-runner stop
gitlab-runner restart
gitlab-runner status
- 여러 서비스
- 서비스 관련 명령어를 실행할 때 “액세스 거부”(Access Denied) 오류가 발생하는 경우
서비스 관련된 모든 명령어는 이러한 매개변수를 허용합니다:
매개변수 | 기본값 | 설명 |
---|---|---|
--service
| gitlab-runner
| 사용할 사용자 지정 서비스 이름 지정 |
--config
| 구성 파일 참조 | 사용할 사용자 정의 구성 파일 지정 |
gitlab-runner install
이 명령어는 GitLab Runner를 서비스로 설치합니다. 실행되는 시스템에 따라 다른 매개변수 세트를 허용합니다.
- Windows에서 또는 관리자 권한으로 실행할 때는 –user 플래그를 허용하여 shell executor로 실행되는 빌드의 특권을 해제할 수 있습니다.
매개변수 | 기본값 | 설명 |
---|---|---|
--service
| gitlab-runner
| 사용할 서비스 이름 지정 |
--config
| 구성 파일 참조 | 사용할 사용자 정의 구성 파일 지정 |
--syslog
| (systemd시스템이 아닌 경우) true
| 시스템 로깅 서비스에 통합해야 하는지 여부 지정 |
--working-directory
| 현재 디렉토리 | shell executor로 빌드가 실행될 때 모든 데이터가 저장되는 루트 디렉토리를 지정 |
--user
| root
| 빌드를 실행하는 사용자 지정 |
--password
| 없음 | 빌드를 실행하는 사용자의 비밀번호 지정 |
gitlab-runner uninstall
이 명령어는 GitLab Runner를 서비스로 실행되지 않도록 중지 및 제거합니다.
gitlab-runner start
이 명령어는 GitLab Runner 서비스를 시작합니다.
gitlab-runner stop
이 몫령어는 GitLab Runner 서비스를 중지합니다.
gitlab-runner restart
이 명령어는 GitLab Runner 서비스를 중지한 후 다시 시작합니다.
gitlab-runner status
이 명령어는 GitLab Runner 서비스의 상태를 출력합니다. 서비스가 실행 중이면 종료 코드는 0이고, 실행 중이 아니면 0이 아닌 값입니다.
여러 서비스
--service
플래그로 여러 개의 GitLab Runner 서비스를 설치하고 별도의 구성을 사용할 수 있습니다.
Run 관련 명령어
이 명령어는 GitLab에서 빌드를 가져오고 처리하는 데 사용할 수 있습니다.
gitlab-runner run
이 명령어는 GitLab Runner가 서비스로 실행될 때 실행되는 주요 명령어입니다. config.toml
에서 정의된 모든 Runner를 읽고 모두 실행하려고 시도합니다.
다음과 같은 매개변수를 허용합니다.
매개변수 | 기본값 | 설명 |
---|---|---|
--config
| 구성 파일 참조 | 사용할 사용자 정의 구성 파일 지정 |
--working-directory
| 현재 디렉토리 | shell executor로 빌드가 실행될 때 모든 데이터가 저장되는 루트 디렉토리 지정 |
--user
| 현재 사용자 | 빌드를 실행하는 사용자 지정 |
--syslog
| false
| 모든 로그를 SysLog(유닉스) 또는 EventLog(Windows)로 보내는지 여부 지정 |
--listen-address
| 비어있음 | Prometheus 메트릭 HTTP 서버가 수신해야 하는 주소(<호스트>:<포트> )를 지정
|
gitlab-runner run-single
- 구성 파일 사용 가능성은 GitLab Runner 17.1에서 소개되었습니다.
이는 GitLab 인스턴스에서 단일 빌드만 실행하는 데 사용할 수 있는 보조 명령어입니다. 다음과 같은 작업이 가능합니다:
-
GitLab URL 및 Runner 토큰을 포함한 모든 옵션을 CLI 매개변수 또는 환경 변수로 받을 수 있습니다. 예를들어 모든 매개변수를 명시적으로 지정한 단일 작업:
gitlab-runner run-single -u http://gitlab.example.com -t my-runner-token --executor docker --docker-image ruby:2.7
-
특정 Runner의 구성을 사용하기 위해 구성 파일을 읽을 수 있습니다. 예를들어, 구성 파일을 사용한 단일 작업:
gitlab-runner run-single -c ~/.gitlab-runner/config.toml -r runner-name
--help
플래그를 사용하여 모든 가능한 구성 옵션을 볼 수 있습니다:
gitlab-runner run-single --help
--max-builds
옵션을 사용하여 Runner가 종료되기 전에 실행하는 빌드 수를 제어할 수 있습니다. 0
의 기본값은 Runner에 빌드 제한이 없고 작업이 영구적으로 실행됩니다.
또한 --wait-timeout
옵션을 사용하여 Runner가 작업 직전에 대기하는 시간을 제어할 수 있습니다. 0
의 기본값은 Runner가 작업 사이에 영구적으로 대기합니다.
내부 명령어
GitLab Runner는 단일 이진 파일로 배포되며 빌드 중에 사용되는 몇 가지 내부 명령어를 포함하고 있습니다.
gitlab-runner artifacts-downloader
GitLab로부터 아티팩트 아카이브를 다운로드합니다.
gitlab-runner artifacts-uploader
아티팩트 아카이브를 GitLab에 업로드합니다.
gitlab-runner cache-archiver
캐시 아카이브를 생성하여 로컬에 저장하거나 외부 서버에 업로드합니다.
gitlab-runner cache-extractor
로컬이나 외부에 저장된 파일에서 캐시 아카이브를 복원합니다.
문제 해결
일반적인 문제점은 아래와 같습니다.
서비스 관련 명령어 실행 시 Access Denied
보통 서비스 관련 명령어를 실행하려면 관리자 권한이 필요합니다:
- Unix(Linux, macOS, FreeBSD) 시스템에서는
gitlab-runner
에sudo
를 접두어로 붙입니다. - Windows 시스템에서는 상위 명령 프롬프트를 사용합니다.
관리자
명령 프롬프트를 실행합니다. 가장 간단한 방법은 Windows 검색란에명령 프롬프트
를 입력하고 마우스 오른쪽 버튼을 클릭하여관리자로 실행
을 선택하는 것입니다. 이후, 실행 여부를 확인하는 메시지가 표시됩니다.
gitlab-runner stop
실행 시 우아하게 종료되지 않음
호스트에 설치된 러너가 로컬 실행자로 실행될 때 아티팩트를 다운로드하거나 업로드하거나 캐시를 처리하는 등의 작업을 수행하려면 추가 프로세스가 시작됩니다.
이러한 프로세스는 gitlab-runner
명령어로 실행되며, 이는 해당 작업이 실패하는 경우 pkill -QUIT gitlab-runner
또는 killall QUIT gitlab-runner
사용이 가능함을 의미합니다.
이러한 문제를 방지하는 두 가지 방법은 다음과 같습니다:
-
SIGQUIT
를 종료 신호로 사용하여 러너를 로컬 서비스(예:systemd
)로 등록하고gitlab-runner stop
또는systemctl stop gitlab-runner.service
를 사용합니다. 이러한 동작을 활성화하기 위한 예시 구성은 다음과 같습니다:; /etc/systemd/system/gitlab-runner.service.d/kill.conf [Service] KillSignal=SIGQUIT TimeoutStopSec=infinity
- 이 파일을 생성한 후, 이 변경 사항을 적용하려면
systemctl daemon-reload
로systemd
를 다시 로드합니다.
- 이 파일을 생성한 후, 이 변경 사항을 적용하려면
-
kill -SIGQUIT <pid>
로 프로세스를 수동으로 종료합니다. 이를 위해 주된gitlab-runner
프로세스의pid
를 찾아야 합니다. 시작 시 표시되므로 로그를 살펴보면 찾을 수 있습니다:$ gitlab-runner run Runtime platform arch=arm64 os=linux pid=8 revision=853330f9 version=16.5.0
시스템 ID 상태 파일 저장: 액세스 거부됨
GitLab Runner 15.7 및 15.8에서는 config.toml
파일을 포함하는 디렉터리에 대한 쓰기 권한이 없으면 시작되지 않을 수 있습니다.
GitLab Runner가 시작되면 config.toml
을 포함하는 디렉터리에서 .runner_system_id
파일을 찾습니다.
.runner_system_id
파일을 찾을 수 없으면 새로 생성합니다. GitLab Runner가 쓰기 권한이 없으면 시작하지 못합니다.
이 문제를 해결하려면 일시적으로 파일 쓰기 권한을 허용한 다음 gitlab-runner run
을 실행합니다.
.runner_system_id
파일이 생성되면 권한을 읽기 전용으로 재설정할 수 있습니다.