プライベート git サブモジュールが Jenkins に見つかりません
-
21-12-2019 - |
質問
問題
Jenkins でアプリケーションを構築しようとしていますが、それは Github のプライベート リポジトリ上にあり、プライベート サブモジュールもあります。
Jenkins でプライベート リポジトリの資格情報を設定することでプライベート リポジトリのクローンを作成できますが、Jenkins はサブモジュールのクローンを作成できません。失敗したビルドの出力は次のとおりです。
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/Project/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:user/repogit
using GIT_SSH to set credentials
Checking out Revision 9cc99b67cc676d0ea8ccd489a8327f5c6dbb8d7f (origin/branch)
[workspace] $ /bin/sh -xe /tmp/hudson2710403018107019432.sh
+ git submodule update --init --recursive
Initialized empty Git repository in /var/lib/jenkins/jobs/repository/submodule/.git/
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:user/submodule.git' into submodule path 'repository/submodule/' failed
Build step 'Execute shell' marked build as failure
Discard old builds...
#156 is removed because status FAILURE is not to be kept
Publishing Clover coverage report...
No Clover report will be published due to a Build Failure
Sending e-mails to:
Finished: FAILURE
Jenkinsでやろうとしたことは次のとおりです
- 追加の動作「高度なサブモジュール動作」を設定しようとしましたが、成功しませんでした。
- phpunitでテストを実行する前に、新しいステップをセットアップしようとしました:
git submodule update --init --recursive
- テスト中のメインリポジトリだけでなく、サブモジュールのプロジェクトにもgitリポジトリを設定しようとしましたが、うまくいきませんでした。
これらはすべて、Jenkins がサブモジュールのリポジトリを見つけられないというエラーを引き起こします。
これを解決する方法について何かアイデアはありますか?
(ユーザー名、パス、リポジトリは正しいので、ここに投稿するために変更しました)
解決
解決しました。私の資格情報では、ファイルに保存する代わりに、直接 SSH キー (オプション「直接入力」) を使用していました。
キー (公開鍵と秘密鍵) を ~/.ssh に配置し、資格情報を「Jenkins マスターから ~/.ssh から」オプションに変更しました。
問題は、サブモジュールがメイン リポジトリに指定した認証情報を使用しておらず、デフォルトの SSH キー (.ssh/id_rsa) を使用しようとしていたことでした。
別の解決策は、 -i my_key を git サブモジュール ステップに渡すことです (キーがデフォルトのパス (~/.ssh/id_rsa) にない場合にのみこれが必要です)。
また、キーに正しいアクセス許可を与えることも忘れないでください。私の場合は次のことを行う必要がありました。
chown apache ~/.ssh/id_rsa*
chmod 700 ~/.ssh/id_rsa*