- macOS의 제한 사항
- GitLab Runner 업그레이드
- 서비스 파일 업그레이드
- GitLab Runner 서비스와 codesign 사용
-
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
오류 gitlab-runner start
명령에FATAL: Failed to start gitlab-runner: exit status 134
오류gitlab-runner start
명령에FATAL: Failed to start gitlab-runner: "launchctl" failed with stderr: Load failed: 5: Input/output error
오류- API 응답에서 TLS 데이터를 가져올 때 오류: Error error=couldn’t build CA Chain
macOS에서 GitLab Runner 설치
이 페이지에는 macOS (Apple Silicon 및 Intel x86-64)에 GitLab Runner를 설치하는 방법에 대한 지침이 포함되어 있습니다.
문제 해결에 대한 정보는 GitLab Runner 문제 해결을 참조하세요.
-
시스템에 맞는 이진 파일을 다운로드하세요:
-
인텔 기반 시스템의 경우:
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 애플리케이션을 실행할 사용자 계정에서:
-
러너를 등록 구성하세요. 등록 프로세스 중 shell executor를 선택하세요. 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
로 시작됩니다. LaunchAgent
를 사용하면 빌드가 UI 상호 작용을 수행하여 iOS 시뮬레이터에서 실행 및 테스트하는 것이 가능합니다.
macOS에는 LaunchAgent
외에도 백그라운드에서 완전히 실행되는 LaunchDaemon
도 있습니다. LaunchDaemon
은 시스템 시작 시 실행되지만 LaunchAgent
와 같은 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 실행 파일을 대체하기 위해 이진 파일을 다운로드하세요:
-
인텔 기반 시스템의 경우:
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 - 다른 태그로 표시된 릴리스 다운로드에 따라 사용 가능한 각 버전의 이진 파일을 다운로드할 수 있습니다.
-
-
실행 권한을 부여하세요:
sudo chmod +x /usr/local/bin/gitlab-runner
-
서비스를 시작하세요:
gitlab-runner start
서비스 파일 업그레이드
LaunchAgent
구성을 업그레이드하려면 서비스를 제거한 후
서비스를 설치해야 합니다:
gitlab-runner uninstall
gitlab-runner install
gitlab-runner start
GitLab Runner 서비스와 codesign 사용
macOS에 gitlab-runner
를 Homebrew를 사용하여 설치하고 빌드가 codesign
을 호출하는 경우 <key>SessionCreate</key><true/>
를 설정해야 사용자 키체인에 액세스할 수 있을 수 있습니다. GitLab은 Homebrew 공식식으로 유지하지 않으며, GitLab Runner를 설치하려면 공식 이진 파일을 사용해야 합니다.
다음 예에서는 빌드를 gitlab
사용자로 실행하고 해당 사용자가 codesign을 위해 설치한 서명 인증서에 액세스하려고 합니다:
<?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 실리콘 기반 시스템에서 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를 설치하려고 시도할 때 발생할 수 있습니다. GUI 터미널 응용 프로그램을 통해 GitLab Runner 서비스를 관리하는지 확인하십시오. SSH 연결이 아니라 GUI 터미널 응용 프로그램에서 관리해야 합니다.
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를 실행할 때LaunchAgents
를SessionCreate
로 생성했습니다. (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
오류
이 오류가 발생하면 작업 중 하나가 실패한 것입니다. 이 경우 실행중인 runner가 GitLab 인스턴스에 연결할 수 있는지 확인하십시오. 연결이 방화벽, 프록시, 권한 또는 라우팅 구성과 같은 것에 의해 차단될 수 있습니다.
gitlab-runner start
명령에 FATAL: Failed to start gitlab-runner: exit status 134
오류
이 오류는 GitLab Runner 서비스가 올바르게 설치되지 않았음을 나타냅니다. 다음 명령을 실행하여 오류를 해결할 수 있습니다.
gitlab-runner uninstall
gitlab-runner install
gitlab-runner start
오류가 지속되면 그래픽 로그인을 수행하십시오. 그래픽 로그인을 수행하면 LaunchAgent
가 부트스트랩되어 서비스를 시작하는 데 필요합니다.
자세한 내용은 macOS에서의 제한 사항을 참조하십시오.
gitlab-runner start
명령에 FATAL: Failed to start gitlab-runner: "launchctl" failed with stderr: Load failed: 5: Input/output error
오류
이 오류가 발생하면 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>
디렉토리가 존재하지 않는 경우 디렉토리를 생성하고 러너 서비스 사용자가 해당 디렉토리를 읽고 쓸 수 있는 적절한 권한이 있는지 확인하십시오.
API 응답에서 TLS 데이터를 가져올 때 오류: Error error=couldn’t build CA Chain
이 오류가 발생하면 GitLab Runner를 v15.5.0 이상으로 업그레이드한 경우가 있습니다.
이 오류가 발생하면 다음 작업을 수행해야 할 수 있습니다:
- 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 연결 문제를 해결하는 데 도움이 될 수 있습니다.