142

Jenkins 1.501 および Jenkins Git プラグイン 1.1.26 の使用

それぞれ複数のプロジェクトを持つ 3 つの異なる git リポジトリがあります。

ここで、3 つの git リポジトリからすべてのプロジェクトを Jenkins スレーブの同じワークスペースにチェックアウトする必要があります。Source code Management: Multiple SCMsで各 git リポジトリを定義しました。ただし、リポジトリがチェックアウトされるたびに、以前のリポジトリ (および関連するプロジェクト) が削除されます。

私はこれを読みました:

http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html

しかし、それは本当に役に立ちません。すべてのレポに対して、レポのローカル サブディレクトリ (オプション)の下に同じフォルダーを指定しようとしましたが、同じ結果が得られます。

Jenkins を使用してこれが単に不可能な場合は、ビルド前のステップ/スクリプトを使用して、プロジェクトを適切な場所に移動できると思います。プロジェクトのビルド構成を変更するオプションではありません。

4

9 に答える 9

82

複数の SCM プラグインを使用する場合:

  • チェックアウトする必要があるリポジトリ (メイン プロジェクトまたは依存プロジェクト) ごとに異なるリポジトリ エントリを作成します。

  • 各プロジェクトの「詳細」メニュー (2 番目の「詳細」メニューには、リポジトリごとに「詳細」というラベルの付いた 2 つのボタンがあります) で、「レポのローカル サブディレクトリ (オプション)」テキスト フィールドを見つけます。プロジェクトをコピーする「ワークスペース」ディレクトリ内のサブディレクトリを指定できます。私の開発用コンピューターのファイルシステムをマップできます。

「2 番目の詳細メニュー」はもう存在しません。代わりに、「追加」ボタン (「追加の動作」セクション) を使用して、「サブディレクトリにチェックアウト」を選択する必要があります。

  • ant を使用している場合、ワークスペースのルート ディレクトリではなくサブディレクトリにビルド ターゲットを含む build.xml ファイルが存在するため、「Invoke Ant」構成にそれを反映する必要があります。これを行うには、[Invoke ant] で [Advanced] を押し、build.xml が配置されているサブディレクトリの名前を含む [Build file] 入力テキストを入力します。

それが役立つことを願っています。

于 2013-06-28T13:20:43.987 に答える
52

Multiple SCMs Pluginは廃止されたため。

Jenkins Pipelineを使用すると、複数の git リポジトリをチェックアウトし、gradle を使用してビルドした後、

node {   
def gradleHome

stage('Prepare/Checkout') { // for display purposes
    git branch: 'develop', url: 'https://github.com/WtfJoke/Any.git'

    dir('a-child-repo') {
       git branch: 'develop', url: 'https://github.com/WtfJoke/AnyChild.git'
    }

    env.JAVA_HOME="${tool 'JDK8'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // set java home in jdk environment
    gradleHome = tool '3.4.1' 
}

stage('Build') {
  // Run the gradle build
  if (isUnix()) {
     sh "'${gradleHome}/bin/gradle' clean build"
  } else {
     bat(/"${gradleHome}\bin\gradle" clean build/)
  }
}
}

このようなカスタム パイプラインの代わりに、git サブモジュールの使用を検討することをお勧めします。

于 2017-04-07T08:39:29.023 に答える
20

Multiple SCMs Pluginを Git Plugin と組み合わせて使用​​すると、Jenkins で成功しました。

于 2013-05-23T00:15:41.740 に答える
2

私もこの問題を抱えていました。他のプロジェクトでトリガー/呼び出しビルドを使用して解決しました。リポジトリごとに、パラメーターを使用してダウンストリーム プロジェクトを呼び出します。

主なプロジェクト:

This project is parameterized
String Parameters: PREFIX, MARKETNAME, BRANCH, TAG
Use Custom workspace: ${PREFIX}/${MARKETNAME}
Source code management: None

次に、リポジトリごとに、次のようなダウンストリーム プロジェクトを呼び出します。

Trigger/call builds on other projects: 
Projects to build: Linux-Tag-Checkout
Current Build Parameters
Predefined Parameters: REPOSITORY=<name>

ダウンストリーム プロジェクト: Linux-Tag-Checkout:

This project is parameterized
String Parameters: PREFIX, MARKETNAME, REPOSITORY, BRANCH, TAG
Use Custom workspace:${PREFIX}/${MARKETNAME}/${REPOSITORY}-${BRANCH}
Source code management: Git
git@<host>:${REPOSITORY}
refspec: +refs/tags/${TAG}:refs/remotes/origin/tags/${TAG}
Branch Specifier: */tags/${TAG} 
于 2019-02-08T14:52:51.340 に答える
0

複数の GIT リポジトリを管理するためにgit-repoを使用しています。git-repo によって管理されるリポジトリのすべてまたは一部を同じ Jenkins ジョブ ワークスペースにチェックアウトできるJenkins Repo プラグインもあります。

于 2014-11-13T21:25:12.030 に答える