質問

問題

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*
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top