Introduction
備忘録。
自宅のNAS上で動いているGitLabの証明書 (Let’s Encrypt) が期限切れになり、更新した影響かGitLab Runnerが動かなくなった。
Windowsで動いているのは恐らく OpenSSL に依存していないからだと思われるが、それはどうでもいい。
GitLabがRunnerを認識しないのである。
Resolution
Linux
Ubuntu上でデーモンとして動いているGitLab Runnerのログを見てみてみたところ
1 | $ sudo systemctl status gitlab-runner |
上に書いたように、証明書のエラーが出ていた。
実行時では無くて登録時にこのエラーが出ることもあるらしく、解決策は下記に書かれていた。
兎に角、GitLabで使用している証明書をGitLab Runner似認識させる必要があり、その証明を端末に展開すれば良い。
GitLabのホスト名が hoge.xxx.yyy とした場合、証明書を展開するのは下記のような感じになる。
1 | sudo mkdir -p /etc/gitlab-runner/certs |
途中の chown は不要かもしれない。
OSX
GitLab-Runnerのログの出力先が syslog になっている。
ここが嵌りどころで、通常、 syslog の出力先は /var/log/system.log になるが、OSXの Sierra から、
- ASL (Apple System Logger) という統合ログ環境に変更
- Console.app か log コマンドで閲覧可能
と変わってしまった。
独自仕様が大好きな Apple の悪い癖だと思う。
Console.app は下記のような感じ。
が、ログを見ると状況が違う。
まず、状況はLinuxと一緒で、証明書の更新は必要。
手動で、GitLab Runnerをキックすると、
1 | /usr/local/bin/gitlab-runner run \ |
のように証明書エラーがでる。
同様に、証明書を置き換えれば良い。
自分の環境では、GitLab Runnerがホームにもいるので、
1 | sudo mkdir -p ~/.gitlab-runner/certs |
最後の chown は不要かもしれないが、これでエラーは消えるが、これはデーモンでは無く、自分でキックした場合であるので根本の解決策では無い。
Console.appを見ると、
1 | May 15 11:38:41 MacMini com.apple.xpc.launchd[1] (gitlab-runner[96477]): Service exited with abnormal code: 1 |
と、そもそもサービスとして動いていないようである。
検索してみると、下記が見つかった。
GitLabとして公式の解決では無いが、サービスの設定である /Library/LaunchDaemons/gitlab-runner.plist に対して
- LaunchDaemon の規約に合わせて、Label を
org.gitlab.gitlab-runner
に変更 --user some-user
を<key>UserName</key><string>some-user</string>
に変更- デバッグ用に
StandardOutPath
とStandardErrorPath
を追加
と言う対応で治った模様。
1 | - <key>Label</key><string>gitlab-runner</string> |
証明書をシステムの /etc/gitlab-runner/certs に展開し、マシンを再起動すれば Runner を GitLab が認識する。