- macOS 제한 사항
- GitLab Runner 업그레이드
- 서비스 파일 업그레이드
- GitLab Runner 서비스에서 codesign 사용하기
-
macOS 문제 해결
"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: "launchctl" failed with stderr: Load failed: 5: Input/output error
ongitlab-runner start
command- API 응답에서 TLS 데이터를 가져오는 중
ERROR: Error on fetching TLS Data from API response... error error=couldn't build CA Chain
macOS에서 GitLab Runner 설치하기
GitLab Runner은 macOS에 설치하고 업데이트할 수 있습니다.
문제 해결에 대한 자세한 정보는 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"
다른 버전을 설명된대로 다운로드할 수 있습니다. 최신 릴리즈 다운로드 설명서를 참조하세요.
-
-
실행 권한을 부여하세요:
sudo chmod +x /usr/local/bin/gitlab-runner
-
실행할 사용자로:
-
러너(runner)를 등록하세요. macOS에서 iOS 또는 macOS 애플리케이션을 빌드하는 경우 쉘 엑스큐터를 사용하세요. 작업은 직접 호스트에서 실행되어 로그인된 사용자의 식별 정보를 사용합니다. 작업은 컨테이너에서 실행되지 않으며, 컨테이너 엑스큐터를 사용하는 것보다 보안이 덜합니다. 자세한 내용은 보안 영향 문서를 참조하세요.
-
터미널을 열고 현재 사용자로 전환하세요.
su - <username>
-
GitLab Runner를 서비스로 설치하고 시작하세요:
cd ~ gitlab-runner install gitlab-runner start
-
-
시스템을 재부팅하세요.
위 지침을 따랐다면, GitLab Runner 구성 파일 (config.toml
)은 /Users/<username>/.gitlab-runner/
에 있습니다. 러너(runner) 구성에 대해 자세히 알아보세요.
macOS 제한 사항
현재 사용자로 로그인하려면 터미널에서 su - <username>
명령을 실행하세요. 사용자 이름은 ls /users
명령으로 얻을 수 있습니다.
현재 macOS에서 작동하는 유일한 방법은 사용자 모드에서 서비스를 실행하는 것입니다.
서비스는 사용자가 로그인한 경우에만 실행되므로 macOS 기기에서 자동 로그인을 활성화해야 합니다.
서비스는 LaunchAgent
로 시작됩니다. LaunchAgent
를 사용하여 빌드가 UI 상호작용을 수행할 수 있으므로 iOS 시뮬레이터에서 실행하고
테스트할 수 있습니다.
macOS에는 LaunchDaemon
도 있습니다. LaunchDaemon
은 완전히 백그라운드에서 실행되는 서비스입니다. LaunchDaemon
은 시스템 부팅 시 실행되지만 UI 상호작용에 동일한 액세스를 제공하지 않습니다. Runner 서비스를 LaunchDaemon
으로 실행할 수 있지만 현재는 이 모드의 작동을 지원하지 않습니다.
install
명령을 실행한 후 GitLab Runner가 서비스 구성 파일을 생성했는지 확인하려면 ~/Library/LaunchAgents/gitlab-runner.plist
파일을 확인할 수 있습니다.
만약 Homebrew를 사용하여 git
을 설치했다면, 아래와 같은 /usr/local/etc/gitconfig
파일이 추가될 수 있습니다:
[credential]
helper = osxkeychain
이는 Git이 사용자 자격 증명을 키체인에 캐시하도록 지시하며, 원하는 동작이 아닐 수 있으며 가져오기를 멈출 수 있습니다. 시스템 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"
다른 버전을 설명된대로 다운로드할 수 있습니다. 최신 릴리즈 다운로드 설명서를 참조하세요.
-
-
실행 권한을 부여하세요:
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
사용자로 실행하고 해당 사용자가 설치한 서명 인증서에 액세스하려면:
<?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에서 발생하는 문제 해결과 관련된 사항입니다.
"launchctl" failed: exit status 112, Could not find domain for
이 메시지는 macOS에 GitLab Runner를 설치하려고 시도할 때 발생할 수 있습니다. GUI 터미널 애플리케이션에서 GitLab Runner 서비스를 관리해야 합니다. 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를 서비스로 실행할 때LaunchAgents
를SessionCreate
와 함께 생성했습니다. 그 당시(Mavericks)에는 이것이 Code Signing 작업을 수행하기 위한 유일한 해결책이었습니다. 그러나 이 동작은 최근 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: "launchctl" failed with stderr: Load failed: 5: Input/output error
on gitlab-runner start
command
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 on fetching TLS Data from API response... error error=couldn't build CA Chain
이 오류가 발생하는 경우, 다음을 확인해야 할 수 있습니다:
- 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
이러한 피처 플래그를 비활성화하여 HTTPS 엔드포인트에서 TLS 연결 문제를 해결하는 데 도움이 될 수 있습니다. 이는 SHA-1 또는 다른 폐기된 알고리즘으로 서명된 루트 인증서를 사용하는 HTTPS 엔드포인트에 대한 TLS 연결 문제를 해결하는 데 도움이 될 수 있습니다.