- 환경 변수 사용
- 디버그 모드에서 실행하기
- 슈퍼 사용자 권한
- 구성 파일
- 시그널
- 명령어 개요
- 등록 관련 명령어
- 서비스 관련 명령
- 실행 관련 명령어
- 내부 명령어
- 문제 해결
-
gitlab-runner stop
이 정상적으로 종료되지 않음
GitLab Runner 명령어
GitLab Runner에는 빌드를 등록하고 관리하고 실행하는 데 사용하는 명령어 세트가 포함되어 있습니다.
다음을 실행하여 명령어 디렉터리을 확인할 수 있습니다.
gitlab-runner --help
명령어 뒤에 --help
를 추가하여 해당 명령어의 도움말 페이지를 볼 수 있습니다:
gitlab-runner <command> --help
환경 변수 사용
대부분의 명령어는 구성을 전달하는 방법으로 환경 변수를 지원합니다.
특정 명령어에 --help
를 호출할 때 환경 변수의 이름을 볼 수 있습니다. 예를 들어, run
명령어의 도움말 메시지는 아래와 같습니다:
gitlab-runner run --help
출력은 다음과 유사합니다:
이름:
gitlab-runner run - 다중 실행자 서비스 실행
사용법:
gitlab-runner run [command options] [arguments...]
옵션들:
-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
실행자를 사용하는 경우 killall
또는 pkill
을 사용하지 마십시오. 이는 하위 프로세스도 함께 종료되어 시그널이 적절하게 처리되지 않을 수 있습니다. 작업을 처리하는 주요 프로세스에만 사용하십시오.서비스가 실패할 경우 (어떤 플랫폼의 기본 설정일 수 있음) 자동으로 다시 시작하도록 운영 체제가 구성된 경우 위의 시그널에 의해 종료된 경우 자동으로 실행자가 다시 시작될 수 있습니다.
명령어 개요
gitlab-runner
를 인수 없이 실행하면 다음을 볼 수 있습니다:
이름:
gitlab-runner - a GitLab Runner
사용법:
gitlab-runner [global options] command [command options] [arguments...]
버전:
16.5.0 (853330f9)
작성자:
GitLab Inc. <support@gitlab.com>
COMMANDS:
list 모든 구성된 실행자 나열
run 다중 실행자 서비스 실행
register 실행자 등록
reset-token 실행자 토큰 재설정
install 서비스 설치
uninstall 서비스 제거
start 서비스 시작
stop 서비스 중단
restart 서비스 재시작
status 서비스 상태 가져오기
run-single 단일 실행자 시작
unregister 특정 실행자 해제 등록
verify 모든 등록된 실행자 확인
artifacts-downloader 빌드 아티팩트 다운로드 및 추출 (내부)
artifacts-uploader 빌드 아티팩트 생성 및 업로드 (내부)
cache-archiver 캐시 아티팩트 생성 및 업로드 (내부)
cache-extractor 캐시 아티팩트 다운로드 및 추출 (내부)
cache-init 캐시 경로의 권한 변경 (내부)
health-check 특정 주소의 건강 상태 확인
read-logs 파일에서 작업 로그 읽기, 쿠버네티스 실행자에서 사용됨 (내부)
help, h 명령어 디렉터리 또는 명령어에 대한 도움말 표시
GLOBAL OPTIONS:
--cpuprofile value 파일에 CPU 프로파일 작성 [$CPU_PROFILE]
--debug 디버그 모드 [$RUNNER_DEBUG]
--log-format value 로그 포맷 선택 (옵션: runner, text, json) [$LOG_FORMAT]
--log-level value, -l value 로그 레벨 (옵션: debug, info, warn, error, fatal, panic) [$LOG_LEVEL]
--help, -h 도움말 표시
--version, -v 버전 출력
아래에서 각 명령어가 하는 역할에 대해 상세히 설명합니다.
등록 관련 명령어
새 실행자를 등록하거나 등록된 실행자를 나열하고 확인하는 데 다음 명령어를 사용합니다.
이러한 명령어는 다음 인수를 지원합니다:
매개변수 | 기본값 | 설명 |
---|---|---|
--config
| 구성 파일 섹션 참조 | 사용할 사용자 지정 구성 파일 지정 |
gitlab-runner register
이 몤령어는 GitLab Runners API를 사용하여 GitLab에 실행자를 등록합니다.
등록된 실행자는 구성 파일에 추가됩니다.
한 대의 GitLab Runner 설치에서 여러 구성을 사용할 수 있습니다. gitlab-runner register
를 실행하면 새 구성 항목이 추가됩니다. 기존 항목은 제거되지 않습니다.
실행자를 등록하는 두 가지 방법이 있습니다:
- 대화식.
- 비대화식.
대화형 등록
이 명령은 일반적으로 대화 형 모드(기본값)로 사용됩니다. 러너 등록 중에 여러 가지 질문을 받게 됩니다.
이 질문은 등록 명령을 호출할 때 인수를 추가하여 미리 작성될 수 있습니다.
gitlab-runner register --name my-runner --url "http://gitlab.example.com" --registration-token my-registration-token
또는 register
명령을 실행하기 전에 환경 변수를 구성함으로써 미리 작성할 수 있습니다.
export CI_SERVER_URL=http://gitlab.example.com
export RUNNER_NAME=my-runner
export REGISTRATION_TOKEN=my-registration-token
gitlab-runner register
모든 가능한 인수 및 환경을 확인하려면 다음을 실행하세요.
gitlab-runner register --help
비대화형 등록
비대화형/처리되지 않은 모드로 등록을 사용할 수 있습니다.
등록 명령을 호출할 때 추가 인수를 지정할 수 있습니다.
gitlab-runner register --non-interactive <other-arguments>
또는 register
명령을 실행하기 전에 환경 변수를 구성함으로써 미리 작성할 수 있습니다.
<other-environment-variables>
export REGISTER_NON_INTERACTIVE=true
gitlab-runner register
--key={true|false}
와 같이 전달해야 합니다.
[[runners]]
구성 템플릿 파일
- 소개됨 in GitLab Runner 12.2.
구성 템플릿 파일 기능을 사용하여 러너 등록 중에 추가 옵션을 쉽게 구성할 수 있습니다.
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-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
이 명령은 GitLab 러너 API를 사용하여 러너 토큰을 재설정합니다. 러너 ID 또는 현재 토큰 을 사용하여 기대합니다.
러너의 이름(또는 URL 및 ID), 그리고 토큰이 이미 만료된 경우에만 사용하기 위한 선택적인 PAT(PAT와 러너 ID는 토큰이 이미 만료된 경우에 사용됩니다)가 필요합니다.
--all-runners
옵션을 사용하면 모든 첨부된 러너의 토큰을 재설정합니다.
러너의 현재 토큰으로
gitlab-runner reset-token --name test-runner
PAT와 러너 이름으로
gitlab-runner reset-token --name test-runner --pat PaT
PAT, GitLab URL, 및 러너 ID로
gitlab-runner reset-token --url "https://gitlab.example.com/" --id 12345 --pat PaT
모든 러너
gitlab-runners reset-token --all-runners
서비스 관련 명령
다음 명령을 사용하여 러너를 시스템 또는 사용자 서비스로 관리할 수 있습니다. 이러한 명령을 사용하여 러너 서비스를 설치, 제거, 시작, 중지할 수 있습니다.
gitlab-runner install
gitlab-runner uninstall
gitlab-runner start
gitlab-runner stop
gitlab-runner restart
gitlab-runner status
- 여러 서비스
- 서비스 관련 명령을 실행할 때 접근 거부
모든 서비스 관련 명령은 다음 인수를 허용합니다.
매개변수 | 기본값 | 설명 |
---|---|---|
--service
| gitlab-runner
| 사용자 정의 서비스 이름 지정 |
--config
| 구성 파일 참조 | 사용할 사용자 정의 구성 파일 지정 |
gitlab-runner install
이 명령은 GitLab Runner를 서비스로 설치합니다. 실행되는 시스템에 따라 다른 세트의 인수를 허용합니다.
Windows나 슈퍼 유저로 실행될 때 shell executor로 실행되는 빌드의 권한을 낮출 수 있는 --user
플래그를 허용합니다.
매개변수 | 기본값 | 설명 |
---|---|---|
--service
| gitlab-runner
| 사용할 서비스 이름 지정 |
--config
| 구성 파일 참조 | 사용할 사용자 정의 구성 파일 특정 |
--syslog
|
true (서비스가 systemd 시스템이 아닌 경우)
| 서비스가 시스템 로깅 서비스와 통합되어야 하는지 여부 명시 |
--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 서비스를 설치하고 별도의 구성으로 실행할 수 있습니다.
실행 관련 명령어
이 명령은 GitLab에서 빌드를 검색하고 처리하는 데 사용합니다.
gitlab-runner run
GitLab Runner가 서비스로 시작될 때 실행되는 주요 명령어입니다. config.toml
에서 정의된 모든 러너를 읽고 모두 실행하려고 합니다.
이 명령에는 다음 매개변수가 포함됩니다.
매개변수 | 기본값 | 설명 |
---|---|---|
--config
| 설정 파일 참조 | 사용할 사용자 정의 구성 파일 지정 |
--working-directory
| 현재 디렉터리 | shell 실행자로 빌드를 실행할 때 데이터가 저장되는 루트 디렉터리를 지정 |
--user
| 현재 사용자 | 빌드를 실행하는 사용자 지정 |
--syslog
| false
| 모든 로그를 SysLog(Unix) 또는 EventLog(Windows)로 전송 |
--listen-address
| 비어 있음 | Prometheus 메트릭 HTTP 서버가 수신 대기해야 하는 주소(<호스트>:<포트> ) 지정
|
gitlab-runner run-single
이 명령은 단일 GitLab 인스턴스에서 하나의 빌드만 실행하는 데 사용할 수 있는 보조 명령어입니다. 구성 파일을 사용하지 않으며 옵션을 모두 매개변수 또는 환경 변수로 전달해야 합니다. GitLab URL 및 Runner 토큰도 지정해야 합니다.
예:
gitlab-runner run-single -u http://gitlab.example.com -t my-runner-token --executor docker --docker-image ruby:2.7
--help
플래그를 사용하여 모든 가능한 구성 옵션을 확인할 수 있습니다.
gitlab-runner run-single --help
--max-builds
옵션을 사용하여 러너가 종료되기 전에 실행하는 빌드 수를 제어할 수 있습니다. 기본값 0
은 러너에 빌드 제한이 없고 작업이 계속 실행됨을 의미합니다.
--wait-timeout
옵션을 사용하여 러너가 작업 전에 대기하는 시간을 제어할 수 있습니다. 기본값 0
은 러너에 제한 시간이 없고 작업 사이에 영원히 대기합니다.
내부 명령어
GitLab Runner는 단일 이진 파일로 배포되며 빌드 중에 사용되는 몇 가지 내부 명령어가 포함되어 있습니다.
gitlab-runner artifacts-downloader
GitLab에서 아티팩트 아카이브를 다운로드합니다.
gitlab-runner artifacts-uploader
아티팩트 아카이브를 GitLab에 업로드합니다.
gitlab-runner cache-archiver
캐시 아카이브를 생성하고 로컬에 저장하거나 외부 서버에 업로드합니다.
gitlab-runner cache-extractor
로컬 또는 외부로 저장된 파일에서 캐시 아카이브를 복원합니다.
문제 해결
다음은 일반적인 문제입니다.
서비스 관련 명령어를 실행할 때 액세스 거부 오류가 발생하는 경우
일반적으로 서비스 관련 명령어는 관리자 권한이 필요합니다.
- Unix(Linux, macOS, FreeBSD) 시스템에서는
gitlab-runner
명령에sudo
를 접두어로 붙입니다. - Windows 시스템에서는 상위 명령 프롬프트(elevated command prompt)를 사용합니다.
관리자
명령 프롬프트(elevated command prompt)를 실행합니다. 가장 간단한 방법은 Windows 검색 필드에명령 프롬프트
를 입력하고 마우스 오른쪽 버튼을 클릭한 다음관리자로 실행
을 선택합니다. 관리자 권한으로 실행 여부를 확인하는 메시지가 표시됩니다.
gitlab-runner stop
이 정상적으로 종료되지 않음
호스트에 설치된 러너가 로컬 실행자로 실행되면 아티팩트 다운로드 또는 업로드, 캐시 처리 등의 작업을 처리하기 위해 추가 프로세스가 시작됩니다. 이러한 프로세스는 gitlab-runner
명령으로 실행되므로 이를 종료할 수 있습니다. 해당 작업에서 항상 실패하며 이를 방지하는 두 가지 방법이 있습니다.
-
systemd
와 같은 로컬 서비스로 러너를 등록하고 종료 신호로SIGQUIT
을 사용하고gitlab-runner stop
또는systemctl stop gitlab-runner.service
를 사용합니다. 이러한 동작을 활성화하는 예제 구성은 다음과 같습니다.; /etc/systemd/system/gitlab-runner.service.d/kill.conf [Service] KillSignal=SIGQUIT TimeoutStopSec=infinity
- 이 파일을 만든 후
systemd
를systemctl daemon-reload
로 다시 로드하여 구성 변경을 적용합니다.
- 이 파일을 만든 후
-
매뉴얼으로
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
파일을 만든 후 권한을 읽기 전용으로 재설정할 수 있습니다.