4

タイトルが私が言おうとしていることについて何かを説明しているかどうかはわかりませんが、ここにあります:

git サブモジュールを使用して Jenkins をセットアップするときの「ベスト プラクティス」とは何かを知りたいです。メイン リポジトリとサブモジュール リポジトリの両方に ssh 経由でアクセスします。複数のユーザーがいるため、これらすべてに個別のユーザー名があります。これは、独自のユーザーを持つ Jenkins にも当てはまります。しかし、問題に遭遇しました。サブモジュールを作成すると: git submodule add ssh://my-user-name@address-to-module-repoしてプッシュすると、Jenkins はサブモジュールを取得しようとするときに私をユーザーとして参照しますが、これは明らかに失敗します。また、他のユーザーがpullを実行した場合、私のユーザー名は引き続きパス (.gitmodule、.git/config など) に残ります。

「通常の」ユーザー間でのGitサブモジュールとsshアクセス処理の共有に関する別の投稿を見つけましたが、Jenkinsがビルドしようとするときの問題は実際には解決しません.Jenkinsがすべてをフェッチした後にのみシェルコマンドを実行できるためですリンクに記載されているとおりにするか、私(ジェンキンスの初心者)にできますか?

それで、物事を要約します。ssh経由でサブモジュールをフェッチするときにJenkinsが独自のユーザーを使用するように、これをどのように解決できますか?

Br、ミスターピストル

4

3 に答える 3

5

StackOverflow の別の質問で見つけた良い解決策があります: Git submodule URL not included username?

使用できます

[submodule foosub]
path = foosub
url = ./../foosub

プロジェクトに使用されている URL に関連する URL を定義します。たとえば、プロジェクト URL myuser@myserver.com/git/project とサブモジュール URL myuser@myserver.com/git/foosub がある場合、構成は機能するはずです。もちろん、サブモジュールがプロジェクトとは異なるサーバーにある場合は機能しません。

プロジェクト URL に独自のユーザー データ セットがあるため、Jenkins は独自のユーザー データをサブモジュールに適用する必要があります。

于 2012-10-16T17:20:17.543 に答える
2

一般的なJenkinsssh"account"が、少なくともこれらのサブモジュールからプルすることを許可されている場合は、次のようなスクリプトを追加できます。

  • Jenkins環境で実行されていることを検出します
  • .gitmodulesファイルの内容
  • .gitmodulesユーザーをJenkinsに置き換えるには、のコンテンツを変更します

.gitmodulesファイルに変更を記録しないために、ファイルの元のコンテンツを復元する別のスクリプトを作成することもできます。

これらのスクリプトが自動的に機能する方法は、コンテンツフィルタードライバーを使用することです。

コンテンツフィルタードライバー

于 2012-06-12T09:30:28.583 に答える
2

解決策は、Jenkins ユーザーの ssh 構成ファイルを変更して、サブモジュール リポジトリへの ssh 接続を設定するときに独自のデフォルト ユーザーを使用することでした。

于 2012-06-26T08:59:01.427 に答える