最近TFS 2010からTFS 2017にアップグレードしました。ビルドが成功したか失敗したかを電子メールで送信するプロジェクトのビルド通知が設定されています。これまで、この電子メールには、失敗した単体テストのリストと、関連するチェンジセットのリストが含まれていました。ただし、TFS 2017にアップグレードした後は、どちらもビルド通知メールに含まれていません。私が知っている限り、TFS 2010のアラートテンプレートを修正して、欠落した情報を電子メールに取り込むことはありませんでした。 TFS 2017ビルド通知電子メールに失敗した単体テストと関連チェンジセットのリストを取得する方法はありますか?TFS 2017ビルド通知に「関連する変更セット」領域が含まれていません
答えて
私は部分的な解決策があります。作業項目が利用可能なようには見えませんが、チェンジセットはいくつかの異なる名前でしかありません。
最初に私は%programfiles%\Microsoft Team Foundation Server 1X.0\Application Tier\TFSJobAgent\Transforms\1033\BuildCompletedEvent.xsl
を開いて、ソースxmlをダンプするだけの内容に置き換えました。後で編集する必要があるので、このファイルの古い内容はそのままにしておきます。
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
を確認し、そのXSLテンプレートを供給していますソースのXMLを参照するようにビルド通知メールを見て、その後、それを拾うだろうビルドを開始します。 AssociatedChangesetがAssociatedCommitになっていることがわかります。私はMicrosoftがモデルのスキーマを変更し、そのモデルを読み込んでいるテンプレートを無視することに驚きました。
<xsl:if test="count(tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedChangeset']) > 0">
<h2 style="font-size: 12pt; margin-bottom: 0em;">
<span _locID="AssociatedChangesets">Associated Changesets</span>
</h2>
<div style="margin-left:1em">
<table style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 10pt;">
<xsl:apply-templates select="tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedChangeset']">
<xsl:sort select="tb:Fields/tb:InformationField[@Name = 'ChangesetId']/@Value"/>
</xsl:apply-templates>
</table>
</div>
</xsl:if>
をそして前にこれを置く:
はBuildCompletedEvent.xsl内のすべてのオリジナルのコンテンツを交換し、その後、tb:BuildCompletedEvent
テンプレート内で、これを見つける
<xsl:if test="count(tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedCommit']) > 0">
<h2 style="font-size: 12pt; margin-bottom: 0em;">
<span _locID="AssociatedCommits">Associated Commits</span>
</h2>
<div style="margin-left:1em">
<table style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 10pt;">
<xsl:apply-templates select="tb:Build/tb:Information/tb:BuildInformationNode[@Type = 'AssociatedCommit']">
<xsl:sort select="tb:Fields/tb:InformationField[@Name = 'CommitId']/@Value"/>
</xsl:apply-templates>
</table>
</div>
</xsl:if>
そして、実際のチェンジテンプレートを見つけますこれは:
そしてこれを前に置く:
<xsl:template match="tb:BuildInformationNode[@Type = 'AssociatedCommit']">
<tr>
<td style="padding-right:2em">
<strong>
<xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'Author']/@Value"/>.
</strong>
<xsl:call-template name="linefeed2br">
<xsl:with-param name="StringToTransform" select="tb:Fields/tb:InformationField[@Name = 'Comment']/@Value"/>
</xsl:call-template>
-
<a>
<xsl:variable name="href" select="tb:Fields/tb:InformationField[@Name = 'Uri']/@Value"/>
<xsl:variable name="fragment" select="'/_apis/tfvc/changesets/'"/>
<xsl:attribute name="href">
<!--<xsl:value-of select="replace(tb:Fields/tb:InformationField[@Name = 'Uri']/@Value, '/_apis/tfvc/changesets/', '/_versionControl/changeset/')"/>-->
<xsl:value-of select="substring-before($href,$fragment)"/>
<xsl:value-of select="'/_versionControl/changeset/'"/>
<xsl:value-of select="substring-after($href,$fragment)"/>
</xsl:attribute>
Changeset <xsl:value-of select="tb:Fields/tb:InformationField[@Name = 'CommitId']/@Value"/>
</a>
</td>
</tr>
</xsl:template>
XMLでのウリは、したがって、APIの統合のためにウェブUIへのリンクを作るために文字列置換をJSONを返すことに注意してください。私はreplace()
関数が機能しているので、部分文字列を得ることに問題がありました。
http://tfs:8080/tfs/DefaultCollection/_apis/tfvc/changesets/10516
http://tfs:8080/tfs/DefaultCollection/_versionControl/changeset/10516
壊れた参照を変更するのではなく、既存のテンプレートに追加しました。 TFSのアップグレードによってモデル名が古いものに変更された場合でも、テンプレートはまだそれらと一致し、何も編集することなくそれらを引き上げるという希望を持っています。
変更後、TFSに新しいテンプレートが表示されるようにする必要があります。 https://www.visualstudio.com/en-us/docs/setup-admin/tfs/command-line/tfsservicecontrol-cmd
私は、失敗した単体テストでソースXMLを取得していませんが、他の人が実行し、どのテストが失敗したかの詳細を示している場合は、更新されたXSLを共有してください。
ありがとうございました!私たちはビルド通知電子メールに関連するコミット(変更セット)リストを返すことができました。残念ながら、私たちはまだ失敗したテストを取得することはできません - 生成されるXMLには含まれていないようです。 – Lex
これは、新しいvNextビルドのユーザーボイスとなっています。チェンジデータと関連付けられている作業項目は、BuildCompletedEvent.xslに
(vNextの構築)TFS 2015のビルドを使用して電子メールアラートが表示されません関連したチェックインをデフォルトにさらされていないようです
今の https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/9754887-using-tfs-2015-build-build-vnext-email-alerts-do
あなたの電子メールアラートDrive:\%programfiles%\Microsoft Team Foundation Server 1X.0\Application Tier\TFSJobAgent\Transforms\1033
をカスタマイズする必要があります。詳細はお問い合わせくださいCustomize the format for TFS email alerts
https://msdn.microsoft.com/en-us/library/jj635150(v=vs.120).aspx#Checkyourbuildsystemandbuildprocessをデバッグ –
- 1. ビルド品質の変更についてTFS 2017に通知する
- 2. TFS内の子供を含む製品バックログ項目の領域の変更2017
- 3. TFSマージ別の変更セット - 変更セットがありません
- 4. QGLWidgetの描画領域のサイズが変更されていません
- 5. Rocket.Chatに対する変更はビルド後に含まれていません
- 6. TFS 2017 XAMLビルドはGit Branchポリシーではサポートされていませんか?
- 7. TFSマージして関連付けられた変更セット/コメントを保持する
- 8. EC2インスタンス領域にユーザーデータスクリプトが設定されていません
- 9. TFSのユーザーストーリーが変更されたときに通知する
- 10. 輪郭領域に関連するすべての領域が表示されない
- 11. TFSチケットに関連していない変更セットを表示するクエリを作成します
- 12. ScrumDesk TFSインテグレーションエラー - プロジェクトにインテグレーションが含まれていません
- 13. 2つのTFSビルド間のTFS変更セット
- 14. ARM7アセンブリメモリ領域が初期化されていません
- 15. テキスト領域の値が設定されていませんか?
- 16. コンパイルテンプレートの関連コンテンツ領域の説明のテキストサイズを変更します
- 17. プッシュ通知バッジカウントが更新されていません
- 18. TFSビルド/リリースエージェント「すべてのエージェントを更新する」がTFSのエージェントを更新していない2017
- 19. 通常優先ビルドはTFS 2010で構築されません
- 20. ローカリゼーションネイティブ開発領域ではアプリケーション言語が変更されません
- 21. ジオフェンシング領域を設定し、ユーザーがジオフェンシング領域にいるときに通知を送信する方法
- 22. TFS 2017のビルドから関連するチェンジセットを取得する方法は?
- 23. TFS 2015 Visual Studioビルド - .zipが作成されていません
- 24. C++ win32 apiがボタン領域内にマウスを通知する
- 25. openpyxl:ワークシートが存在しません(文字セットに関連しています)
- 26. 通知領域にアイコンを含むメッセージを表示する方法
- 27. Visual Studio 2017 MVCにすべてのソースフォルダが含まれていません
- 28. ペーパークリップとアマゾンs3 - イメージパスにバケット領域が含まれています
- 29. ビーコンが領域内にあるときの通知を表示
- 30. グループメンバシップに連絡先が含まれていません
[Catlight build notifier for TFS](https://catlight.io)を試すこともできます。チェンジセットも表示されませんが、ビルドをクリックするとブラウザでその詳細を見ることができます。 – alex