7

$/Repo/project と $/Repo/thirdparty の 2 つのサブフォルダーを持つリポジトリがあります。単一のビルドのために、それらの両方を Jenkins に取り込む必要があります。当然のことながら、$/Repo を引っ張ってみましたが、これにより、他のプロジェクトの束と偽のポーリングが得られます (何かが $/Repo にチェックインされるたびにビルドされます)。動作する multi-scm プラグインを使用してみましたが、構成を保存しません (面倒ですが、使用できないわけではありません)。通常のtfsプラグインを使用して、他のレポの呼び出しを手動でWindowsコマンドに入れてみました(これは、それらを別のフォルダーにバインドしても機能しませんでした)。

これにアプローチする最良の方法は何ですか?第三者を引っ張るある種のサブジョブ?複数の scm プラグインを修正しますか? プロジェクトをプルするときに別のリポジトリをプルするための tfs コマンドまたはトリガーはありますか?

4

6 に答える 6

5

これをジョブパイプラインで機能させることができました。ちょっとハックですが、うまくいきます。

私が構築しようとしているプログラムは、( $/Department/Framework/Mainas )workspace\Framework$/Department/Products/TheProgram/Main(as ) を使用していworkspace\TheProgramます。

Jenkins で 3 つのジョブを作成し、それぞれが他の「下流」に配置されています。

  • Framework-Get: の TFS のプロジェクト パスでトリガーする通常のソース コード$/Department/Framework/Main。ビルドステップなし。
  • TheProgram-Get: の TFS のプロダクト パスでトリガーする通常のソース コード$/Department/Products/TheProgram。ビルドステップなし。
  • TheProgram-Build: ソース コード管理なし。ただし、ビルド手順は、上記の 2 つの手順のソースを xcopy します。その後、通常のビルド ステップを実行できます。

Program-Build の最初のビルド ステップは、Windows バッチ コマンドです。

レム ====================================
REM まず、Framework フォルダーを取得します。
rmdir /s/q フレームワーク
mkdir フレームワーク
xcopy /y /q /e ..\..\Framework-Get\Workspace\Framework フレームワーク

レム ====================================
REM 次に、TheProgram フォルダーを取得します。
rmdir /s/q プログラム
mkdir プログラム
xcopy /y /q /e ..\..\TheProgram-Get\Workspace\TheProgram TheProgram

2 番目のビルド ステップは、ant への単純な呼び出しでした。ただし、msbuild またはここで好きなものを使用できます。

于 2012-12-06T19:46:26.183 に答える
2

Jenkins の TFS プラグインは現在、複数の場所からのソースのチェックアウトをサポートしていません。multiple-scm-plugin が答えかもしれませんが、質問で指摘したように、現時点ではオプションではありません。私が見る限り、実際にテストできる解決策は次のとおりです。

  1. 必要なすべてのインポートを含む TFS 内にワークスペースを作成します。Jenkins プラグインでこの機能を使用する機会はありませんが、私は毎日の TFS との遭遇でこの機能を使用しています。うまくいくかもしれないし、うまくいかないかもしれない。
  2. あなたは使うことができます、そしてお願いします-これは少なくとも私にとってはかなり深刻なオプションです-git. git-tfsがあり、必要なすべてのプロジェクトを git リポジトリにインポートします。そして、それらを git に入れることで、フォルダごとに個別のリポジトリを使用したり、git モジュールを使用したり、git externals を使用したりするなど、多くの可能性が開かれます。したがって、少なくとも私にとっては有効なオプションですが、一見すると醜い回避策のように見えます...
于 2012-05-04T13:00:33.207 に答える
0

複数の SCM 0.5 が Team Foundation Server プラグイン 4.0 で動作することを確認できます

ただし、ポーリングは壊れているようです。

于 2015-11-09T07:35:22.000 に答える
0

Jenkins の回避策を自分で作成する必要がありました。これは、TF と PowerShell Snapin Microsoft.TeamFoundation.PowerShell の両方を使用して達成されました。

基本的にワークフローは次のとおりです。

Get-TFsWorkspace (Powershell : ワークスペースを確認するため)

TF Workspace /new (ワークスペースを作成するには)

TF Workfold /unmap (これを使用して、ワークスペースの作成中に作成されるデフォルトの $/ マッピングを削除します)

TF Workfold /map (特定の場所をマップするため、つまり $/Repo/project)

TF Scorch (アーティファクトがあればそれを取り除くため)

TF Get (コードを取得するため)

人々が持っている他の方法があるかもしれませんが、これにより tf Workfold /cloak 機能も使用できるようになります。

乾杯、

お役に立てれば。

于 2015-07-10T20:15:30.827 に答える
0

これに対する私の解決策は、2 つのジョブを作成することです。1 つは依存関係をダウンロードするだけで、もう 1 つはビルドを作成します。

私の場合、Maven プロパティを使用してビルドを管理しました。次に例を示します。

pom.xml

<properties>
  <my.dir>../MyDir</wsdl.dir>
</properties>

ジェンキンスビルド

Goals clean package -U -Dmy.dir=${WORKSPACE}/../../another-build/workspace/MyDir
于 2015-04-09T14:05:30.047 に答える