- macOS의 제한 사항
- GitLab Runner 업그레이드
- 서비스 파일 업그레이드
- GitLab Runner 서비스에서 코드 서명 사용
-
macOS 문제 해결
killed: 9
"launchctl" failed: exit status 112, Could not find domain for
Failed to authorize rights (0x1) with status: -60007.
fatal: unable to access 'https://path:3000/user/repo.git/': Failed to connect to path port 3000: Operation timed out
작업에서의 오류FATAL: Failed to start gitlab-runner: exit status 134
gitlab-runner start
명령에서FATAL: gitlab-runner 시작하지 못했습니다: "launchctl" 오류 발생: Load failed: 5: 입력/출력 오류
gitlab-runner start
명령어에서ERROR: API 응답에서 TLS 데이터를 가져오는 중 오류가 발생했습니다... 오류 error=couldn't build CA Chain
GitLab Runner를 macOS에 설치하기
이 페이지에는 macOS(Apple Silicon 및 Intel x86-64)에 GitLab Runner를 설치하는 방법에 대한 지침이 포함되어 있습니다.
문제 해결에 대한 정보는 GitLab Runner 문제 해결을 참조하세요.
-
시스템에 맞는 바이너리를 다운로드합니다:
-
Intel 기반 시스템의 경우:
sudo curl --output /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-amd64"
-
Apple Silicon 기반 시스템의 경우:
sudo curl --output /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-arm64"
사용 가능한 모든 버전의 바이너리는
Bleeding Edge - 다른 태그가 지정된 릴리즈 다운로드에서 설명된 대로 다운로드할 수 있습니다. -
-
실행 권한을 부여합니다:
sudo chmod +x /usr/local/bin/gitlab-runner
-
GitLab Runner 애플리케이션을 실행할 사용자 계정에서:
-
러너 등록 구성을 합니다.
등록 과정에서 셸 실행기를 선택합니다.
macOS에서 iOS 또는 macOS 애플리케이션을 빌드할 때 작업은 호스트에서 직접 실행되며,
인증된 사용자의 신원을 사용합니다.
작업은 컨테이너 내에서 실행되지 않으며, 이는 컨테이너 실행기를 사용하는 것보다 보안성이 떨어집니다.
자세한 내용은 보안 영향 문서를 참조하세요. -
터미널을 열고 현재 사용자로 전환합니다.
su - <username>
-
GitLab Runner를 서비스로 설치하고 시작합니다:
cd ~ gitlab-runner install gitlab-runner start
문제 해결 섹션에서 이러한 명령을 실행할 때 발생할 수 있는 오류를 해결하는 방법을 확인하세요.
-
-
시스템을 재부팅합니다.
이 지침을 따랐다면 GitLab Runner 구성 파일(config.toml
)은 /Users/<username>/.gitlab-runner/
에 있습니다.
러너 구성에 대해 더 알아보세요.
자세한 정보는 용어집를 참조하세요.
macOS의 제한 사항
그렇게 해야만 서비스 관리가 가능합니다.
현재 사용자로 로그인하려면 터미널에서 su - <username>
명령어를 실행하세요.
사용자 이름은 ls /users
명령어를 실행하여 확인할 수 있습니다.
현재 macOS에서 서비스가 작동하는 유일한 입증된 방법은 사용자 모드에서 서비스를 실행하는 것입니다.
서비스는 사용자로 로그인한 상태에서만 실행되므로 macOS 기기에서 자동 로그인 기능을 활성화해야 합니다.
서비스는 LaunchAgent
로 시작됩니다. LaunchAgents
를 사용하면
빌드가 UI 상호 작용을 수행할 수 있어 iOS 시뮬레이터에서 실행 및 테스트할 수 있습니다.
macOS에는 UI 상호 작용에 대한 접근 권한이 없는 백그라운드에서 완전히 실행되는 서비스인 LaunchDaemons
도 있습니다.
시스템 시작 시 LaunchDaemons
가 실행되지만, LaunchAgents
와 동일한 UI 상호 작용 접근 권한을 가지고 있지 않습니다.
Runner의 서비스를 LaunchDaemon
으로 실행하려고 할 수 있지만, 현재 지원되지 않는 운영 모드입니다.
install
명령어를 실행한 후 GitLab Runner가 서비스 구성 파일을 생성했는지 확인하려면
~/Library/LaunchAgents/gitlab-runner.plist
파일을 확인하세요.
Homebrew를 사용하여 git
을 설치한 경우,
다음 내용을 포함하는 /usr/local/etc/gitconfig
파일이 추가되었을 수 있습니다:
[credential]
helper = osxkeychain
이는 Git에게 사용자 자격 증명을 키체인에 캐시하도록 지시하는 것이며,
원하는 것이 아닐 수 있으며 가져오기(fetch) 동작을 중단시킬 수 있습니다.
시스템 gitconfig
에서 해당 라인을 제거하려면 다음 명령어를 사용하세요:
git config --system --unset credential.helper
또는 GitLab 사용자에 대해 단순히 credential.helper
를 비활성화할 수 있습니다:
git config --global --add credential.helper ''
credential.helper
의 상태를 확인하려면:
git config credential.helper
GitLab Runner 업그레이드
-
서비스를 중지합니다:
gitlab-runner stop
-
GitLab Runner 실행 파일을 대체할 이진 파일을 다운로드합니다:
-
Intel 기반 시스템의 경우:
sudo curl -o /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-amd64"
-
Apple Silicon 기반 시스템의 경우:
sudo curl -o /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-arm64"
사용 가능한 모든 버전의 이진 파일을 다운로드할 수 있습니다 Bleeding Edge - download any other tagged release.
-
-
실행 권한을 부여합니다:
sudo chmod +x /usr/local/bin/gitlab-runner
-
서비스를 시작합니다:
gitlab-runner start
서비스 파일 업그레이드
LaunchAgent
구성을 업그레이드하려면 서비스를 제거하고
설치해야 합니다:
gitlab-runner uninstall
gitlab-runner install
gitlab-runner start
GitLab Runner 서비스에서 코드 서명 사용
macOS에서 Homebrew로 gitlab-runner
를 설치하고 빌드가
codesign
을 호출하는 경우, 사용자 키체인에 접근하기 위해
<key>SessionCreate</key><true/>
를 설정해야 할 수 있습니다. GitLab은 Homebrew 공식을 유지 관리하지 않으며, GitLab Runner를 설치하기 위해 공식 이진 파일을 사용해야 합니다.
다음 예제에서는 gitlab
사용자로 빌드를 실행하고,
그 사용자가 설치한 서명 인증서에 대한 접근을 원합니다:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SessionCreate</key><true/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>RunAtLoad</key><true/>
<key>Disabled</key><false/>
<key>Label</key>
<string>com.gitlab.gitlab-runner</string>
<key>UserName</key>
<string>gitlab</string>
<key>GroupName</key>
<string>staff</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/gitlab-runner/bin/gitlab-runner</string>
<string>run</string>
<string>--working-directory</string>
<string>/Users/gitlab/gitlab-runner</string>
<string>--config</string>
<string>/Users/gitlab/gitlab-runner/config.toml</string>
<string>--service</string>
<string>gitlab-runner</string>
<string>--syslog</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
</dict>
</plist>
macOS 문제 해결
다음은 macOS에서 문제 해결과 관련된 내용입니다.
killed: 9
Apple Silicon 기반 시스템에서 gitlab-runner install
, gitlab-runner start
또는 gitlab-runner register
명령을 실행할 때 이 오류가 발생할 수 있습니다.
이 오류를 해결하려면 ~/Library/LaunchAgents/gitlab-runner.plist
의 StandardOutPath
및 StandardErrorPath
값으로 지정된 디렉터리가 쓰기 가능해야 합니다.
다음 예제에서 /Users/USERNAME/Library/LaunchAgents/gitlab-runner.plist
파일이 로그 파일을 위한 새로운 쓰기 가능한 디렉토리인 gitlab-runner-log
를 포함하도록 수정되었습니다.
<key>StandardErrorPath</key>
<string>/Users/USERNAME/gitlab-runner-log/gitlab-runner.err.log</string>
<key>StandardOutPath</key>
<string>/Users/USERNAME/gitlab-runner-log/gitlab-runner.out.log</string>
</dict>
"launchctl" failed: exit status 112, Could not find domain for
이 메시지는 macOS에 GitLab Runner를 설치하려고 할 때 발생할 수 있습니다. GitLab Runner 서비스를 GUI 터미널 애플리케이션에서 관리하고 SSH 연결에서는 관리하지 않도록 하세요.
Failed to authorize rights (0x1) with status: -60007.
macOS에서 위의 메시지에서 GitLab Runner가 멈춘 경우, 다음 두 가지 원인으로 인해 발생할 수 있습니다:
-
사용자가 UI 상호작용을 수행할 수 있는지 확인하십시오:
DevToolsSecurity -enable sudo security authorizationdb remove system.privilege.taskport is-developer
첫 번째 명령은 사용자에 대한 개발 도구 접근을 활성화합니다.
두 번째 명령은 개발자 그룹의 구성원이 UI 상호작용을 수행할 수 있도록 허용합니다(예: iOS 시뮬레이터 실행). -
GitLab Runner 서비스가
SessionCreate = true
를 사용하지 않도록 하세요.
이전에 GitLab Runner를 서비스로 실행할 때,SessionCreate
가 있는LaunchAgents
를 생성했습니다. 그 당시 (Mavericks), 이는 코드 서명을 작동시키기 위한 유일한 해결책이었습니다.
그러나 OS X El Capitan의 도입으로 이러한 동작이 변경되었습니다.
GitLab Runner 1.1 이후LaunchAgent
를 생성할 때SessionCreate
를 설정하지 않습니다.
그러나 업그레이드를 하려면LaunchAgent
스크립트를 수동으로 다시 설치해야 합니다:gitlab-runner uninstall gitlab-runner install gitlab-runner start
그런 다음
~/Library/LaunchAgents/gitlab-runner.plist
에서SessionCreate
가false
로 설정되어 있는지 확인할 수 있습니다.
fatal: unable to access 'https://path:3000/user/repo.git/': Failed to connect to path port 3000: Operation timed out
작업에서의 오류
작업 중 하나가 이 오류로 실패하는 경우, 러너가 GitLab 인스턴스에 연결할 수 있는지 확인하세요. 연결이 다음과 같은 것들에 의해 차단될 수 있습니다:
- 방화벽
- 프록시
- 권한
- 라우팅 구성
FATAL: Failed to start gitlab-runner: exit status 134
gitlab-runner start
명령에서
이 오류는 GitLab Runner 서비스가 제대로 설치되지 않았음을 나타냅니다. 오류를 해결하기 위해 다음 명령을 실행하세요:
gitlab-runner uninstall
gitlab-runner install
gitlab-runner start
오류가 지속되면 그래픽 로그인으로 진행하세요. 그래픽 로그인은 서비스를 시작하는 데 필요한 LaunchAgent
를 부트스트랩합니다.
자세한 내용은 macOS의 제한 사항을 참조하세요.
FATAL: gitlab-runner 시작하지 못했습니다: "launchctl" 오류 발생: Load failed: 5: 입력/출력 오류
gitlab-runner start
명령어에서
gitlab-runner start
명령어를 실행할 때 이 오류가 발생하면, ~/Library/LaunchAgents/gitlab-runner.plist
의 StandardOutPath
및 StandardErrorPath
값에 지정된 디렉토리가 존재하는지 확인하세요:
<key>StandardOutPath</key>
<string>/usr/local/var/log/gitlab-runner.out.log</string>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/gitlab-runner.err.log</string>
디렉토리가 존재하지 않는 경우, 해당 디렉토리를 생성하고 러너 서비스 사용자가 이 디렉토리에 읽고 쓸 수 있는 적절한 권한을 가지고 있는지 확인하세요.
ERROR: API 응답에서 TLS 데이터를 가져오는 중 오류가 발생했습니다... 오류 error=couldn't build CA Chain
GitLab Runner v15.5.0 이상으로 업그레이드하면 다음과 같은 오류가 발생할 수 있습니다:
인증서가 상위 URL을 제공하지 않습니다: 루프를 종료합니다 발급자=Baltimore CyberTrust Root IssuerCertURL=[] 일련번호=33554617 주체=Baltimore CyberTrust Root 컨텍스트=certificate-chain-build
마지막 인증서를 확인하여 최종 루트 인증서를 찾고 있습니다 발급자=Baltimore CyberTrust Root IssuerCertURL=[] 일련번호=33554617 주체=Baltimore CyberTrust Root 컨텍스트=certificate-chain-build
ERROR: API 응답에서 TLS 데이터를 가져오는 중 오류가 발생했습니다... 오류 error=couldn't build CA Chain: TLS ConnectionState에서 인증서를 가져오는 중 오류: CA Chain으로 인증서를 가져오는 중 오류: 리프 인증서에서 인증서 체인을 해결할 수 없습니다: 검증 중 인증서 체인을 해결하는 중 오류: 체인에서 마지막 인증서를 검증하는 중 오류: x509: “Baltimore CyberTrust Root” 인증서는 이 용도로 허용되지 않습니다 러너=x7kDEc9Q
이 오류가 발생하는 경우, 다음 조치를 취해야 할 수 있습니다:
- GitLab Runner v15.5.1 이상으로 업그레이드하세요.
-
[runners.feature_flags]
구성에서FF_RESOLVE_FULL_TLS_CHAIN
을false
로 설정하세요. 예를 들어:
[[runners]]
name = "ruby-2.7-docker"
url = "https://CI/"
token = "TOKEN"
executor = "docker"
[runners.feature_flags]
FF_RESOLVE_FULL_TLS_CHAIN = false
이 기능 플래그를 비활성화하면 SHA-1 서명으로 서명된 루트 인증서를 사용하는 HTTPS 엔드포인트에 대한 TLS 연결 문제를 해결하는 데 도움이 될 수 있습니다.