ソース コードに変更がある場合にのみビルドを実行するスクリプトを作成しています。ビルドが最後に実行されてから変更があるかどうかを知る必要があります。フォルダーが削除されないため、これは以前は機能していたため、変更があったかどうかを簡単に判断できましたが、ビルドが実行されるたびにすべてが削除されるようになりました。TFS TF history コマンドを使用して最後の変更セットまたは最後の 2 つの変更セットを照会することを考えましたが、出力から変更セット番号だけを解析する際に問題が発生しました。changeset コマンドの使用も検討しました。質問に答えるために使用できるコマンドライン パラメータはありますか?日付または変更セット番号のいずれかから変更がありましたか?
6 に答える
ローカル ワークスペースを使用せずに最新の変更セット番号に移動するには、次のコマンドを使用してください。
tf history /collection:"http://server:8080/tfs/Collection" "$/Project" /recursive /stopafter:1 /noprompt /login:domain\user,password
ビルドするバッチファイルからの抜粋。
set _aPath="f:\TFS\a"
set _TFPath="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
..。
pushd %_aPath%
%_TFPath%\TF.exe history . /r /noprompt /stopafter:1 /Version:W > temp
FOR /f "tokens=1" %%a in ('findstr /R "^[0-9][0-9]*" temp') do set _BuildVersion=10.3.0.%%a
del temp
popd
一時ファイルを使用しますが、うまく機能します。
Andrew が述べたように、TFS には継続的インテグレーション機能が組み込まれています。ただし、はい、特定の時点以降の変更セットをクエリするのは簡単です。日付または変更セットです。その変更セットと最新の間の履歴を確認したい:
tf history <folder> /version:C<changeset>~T /noprompt /recursive
行出力がクエリした変更セットだけである場合、そのチェックイン以降、明らかに変更はありません。それ以外の場合は、追加のチェンジセットが 1 行に 1 つずつ表示されます。
私の1行のコマンド:
for /f "usebackq tokens=*" %%a in (`tf history . /recursive /noprompt /stopafter:1 /version:T ^| powershell -Command "$input | ? { $_ -imatch '^(\d+)\s+' } | %% { $matches[0].Trim() } | Select-Object -First 1"`) do set TIP_CHANGESET=%%a
実行後 TIP_CHANGESET env. 変数にはヒント変更セットが含まれます
BuildForge と Microsoft Team Foundation Server を統合できるアダプターがあります。興味のある方はこちらの URL... http://www-304.ibm.com/partnerworld/gsd/solutiondetails.do?&solution=46360&lc=en
Rational Build Forge 用の Automatra TFS アダプターは、継続的インテグレーション (CI) およびレポート機能を提供します。
TFS アダプターはさらに、TFS ソース (変更セット) と WorkItem レベルの両方で CI 機能を有効にします。すぐに使用できるレポートは、ビルドの下流の消費者に配信できる明確な部品表 (BOM) レポートを提供します。
最後に、ご存知のとおり、Build Forge の強みは、ビルドと展開 (およびそれ以降) を橋渡しする機能です。明らかに、これらの継続的インテグレーション機能を使用すると、達成したいと私が信じている継続的デリバリー機能に進むことができます。