2

ビルド後にバッチ ファイルを実行する必要があるソリューションをビルドしています (ワークフローにはこのためのシーケンスがあります)。TFS はビルドに部分的に成功したというフラグを立てますが、完全な詳細モード (「診断」) でもログにエラーはありません。バッチ ファイルの各行の後にエラー レベルをチェックしていますが、常に 0 です。また、各行の後にファイルの stdout と stderr をリダイレクトすることもテストましたが、そこには手がかりがありませ

とりあえず単体テストは飛ばしてるので関係ありません。

通常、バッチ ファイルでエラーが発生すると (ファイルが見つからないなど)、エラーを示す視覚的な合図があり、これが部分的に成功した状態と一致することに気付きました。しかし、視覚的な手がかりはありません。

では、ビルドが部分的にしか成功していないと TFS が判断するにはどうすればよいでしょうか。

ありがとうございました、

4

2 に答える 2

2

解決しました。

GetImpactedTestsアクティビティが例外をスローしていることがわかりました (TFS マシンのイベント ビューアで確認できます) が、ビルド ログにはまったく表示されません。

この例外により、ビルドが部分的に成功したと推測されますが (コンパイル部分が成功したため)、buid ログで明示的に割り当てを確認できませんでした。影響分析をバイパスすると (Analyze Test Impact を False に設定するか、GetImpactedTests アクティビティを完全に削除して)、エラーは発生しません。

于 2012-11-07T22:05:00.753 に答える
0

ここでは、ラボ ワークフローを使用して同様のことを実験します (CodedUI テストを開始するため)。異なるビルド テンプレート、同じ症状。

ビルド プロセスが部分的に成功したと報告し、デプロイ スクリプト (バッチ ファイル) で成功したと思われるステップが強調表示されていることに気付きました。

コマンドの質問は、モバイル アプリをモバイル デバイスにインストールするためのコマンドです (夜間にテストするため)。

adb install -d -r test.apk

adbコマンドを実行した直後にエラーレベルを見ようと思ったのですが、エラーレベルは0でした。

次に、コマンドがその出力をstderrに送信している可能性があると考え、 Androidオープンソースプロジェクトに関するこの記事を見つけました。これは私の仮説を裏付けています。

以下は私の修正です:

adb install -r -d test.apk  2>&1

2>&1を追加すると、単にstderrが stdout にリダイレクトされ、デプロイ スクリプトがエラーを報告しなくなり、ビルドが成功するようになりました (すべてのテストに合格したとき!)。

結論: スクリプトがstderrに何かを書き込むと、ビルド ワークフローはそれをエラーとして報告します (ワークフローの実行を妨げないため、部分的な成功です)。

これはあなたの特定の問題ではないことは承知していますが、同じ症状が発生したため、stderr情報は、すべてが機能しているように見えても、ビルド プロセスが部分的な成功を報告している理由を他の誰かが見つけるのに役立つと考えました。

于 2016-12-16T15:31:37.030 に答える