5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jenkins でリモート Git レポジトリにアクセスできない macOS 固有の現象

Posted at

さっき起きたトラブルの覚書

前提

  • Jenkins で、リモートの Git レポジトリをワークスペースにクローンする設定を使っている
    • Git コマンドを手動で叩いてクローンするのではなくて、ジョブの設定の「ソースコード管理」でリモートの Git レポジトリを指定してある
  • リモート Git レポジトリには HTTPS でアクセスしており、ユーザ名 & パスワード認証が必要
    • Jenkins にユーザ名 & パスワードを認証情報として登録し、それを使用するようにジョブの「ソースコード管理」で設定してある
  • Jenkins を macOS マシンで実行している

問題

レポジトリのポーリングやクローンが失敗する。ユーザ名/パスワードが間違っている時と同じエラーメッセージが出る。1

原因

  • Jenkins がレポジトリにアクセスする時、 GIT_ASKPASS 環境変数を使用して Git に認証情報を渡すようになっている。
  • Git のコンフィグで credential.helper が設定されていると GIT_ASKPASS 環境変数よりもそちらが優先される。
  • macOS の Git はデフォルトでキーチェーンを使用するように credential.helper が設定されている

→ Jenkins から Git に認証情報が渡されない。 2

解決法

Jenkins のジョブを実行しているユーザアカウントにログインし、コマンド

git config --global credential.helper ''

を実行する。

Jenkins 環境が複数のノードで構築されている場合は実際にポーリングやビルドを行う各ノードでこれを設定する必要がありそう。

  1. GitHub のプライベートレポジトリの場合、ユーザ名/パスワードが間違っている時でも "Repository not found" のエラーになる。確かにレポジトリは存在しているはずなのになぜか not found になると思ったときは、認証エラーも疑うべし。

  2. たまたま同じ認証情報がキーチェーンに入っていたりしない限りは

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?