失敗したビルド
重要
Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。
ビルドが失敗した理由は、プロジェクトに固有である可能性があります。 通常、ビルドエラーを診断する効率的な方法は、それらを動作中のビルドと比較することです。 このプロセスにより、変数を最小限に抑え、シナリオに関連する条件を特定できます。
ビルドはローカルで動作するが、App Center では機能しない場合
通常、この問題の原因はコミットされていないファイル、異なるツール、または復元されていない依存関係です。 確認するには、プロジェクトの完全な git clone を新しいフォルダーに作成します。 次に、比較のために App Center と同じ構成でコンパイルします。
- ターミナルまたはコマンド ライン プロンプトを開き、次のように入力します。
mkdir appcenter-test
- 次に、ディレクトリを変更します。
cd appcenter-test
- 次の方法でリポジトリを複製します。
git clone -b <branch> <remote_repo>
- ローカル IDE またはコマンド ラインで、新しく複製されたプロジェクトを起動します。
- App Center で実行されたビルド コマンドと、ローカルで実行されたコマンドを比較してみてください。
- ローカルで使用しているツールのバージョンを Cloud Build Machines と比較する
ファイル名または場所が変更されたファイルは無視されます
ビルドでは、最近移動または名前変更されたキー ファイルが無視される場合があります。 ビルド構成で [ 保存] または [ビルド & 保存 ] を選択してみてください。 どちらのオプションでも、リポジトリ ツリーのインデックスが再作成され、ビルド定義が更新されます。
既知の原因は、nuget.config ファイル & ビルド スクリプト の移動または名前変更 です。
App Center での異なるビルドの比較
ビルド設定の変更を追跡する
ブランチ構成は、次の API メソッドを呼び出して記録できます。 https://openapi.appcenter.ms/#/build/branchConfigurations_get
API では、過去の構成の記録は直接許可されません。 ただし、 カスタム ビルド スクリプト を使用してこのコマンドを実行すると、ビルドの実行時に現在の構成が自動的に記録されます。
App Center Cloud Build Machines での変更の追跡
ビルド設定と同様に、Cloud Build Machines というドキュメントを確認して、現在のツールをチェックできます。
ただし、ビルド スクリプトで次のコマンドを実行することで、特定のビルドで使用できるツールを記録できます。
eval cat $HOME/systeminfo.md
一部のブランチは機能し、他のブランチは失敗します
ブランチ間のビルド設定またはコミットされたコードの違いを確認してみてください。 また、同じブランチで特定のコミットの後にビルドが一貫して失敗し始める場合は、失敗したコミットで行われた変更を確認する価値があります。
ビルドが断続的に失敗する
ビルドは、ソース コードやビルド設定を変更しなくても失敗する可能性があります。 例:
- 復元されたパッケージの異なるバージョン
- 外部サービスが応答しない
- ビルド内の個々のタスクのタイムアウト
- その他
エラーが発生したときにビルドのエラーが一貫しているかどうかを確認してみてください。
エラー メッセージの分離と解釈
自動エラーの強調表示
App Center Build では、一般的なエラー メッセージまたは役立つ出力が自動的に強調表示され、表示が増えます。 多くの場合、手がかりは、プライマリ エラー、前のログ記録、またはその後のログ記録にあります。 このアプリは、プロジェクト設定 & ビルド構成の両方によって署名されます。 そのため、Android jarsigner によってエラーがログに記録されます。
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 13274 but got 13651 bytes)
##[error]Error: /usr/bin/jarsigner failed with return code: 1
##[error]Return code: 1
専門的な情報
関連するエラー メッセージが見つからない場合は、次の手順としてビルド ログをダウンロードします。これは、メインビルド ページから実行できます。 という名前 logs_n > Build
のフォルダーを開くと、個別のログ ファイルの一覧が数値順に表示されます。 例:
- 1_Intialize job.txt
- 2_Checkout.txt
- 3_Tag build.txt
- その他
ログには、ビルドの主要なフェーズに基づいて番号が付けられています。 ほとんどの場合、ビルド エラーによってフェーズはスキップされ、関連付けられたログは省略されます。
- (手順 1 から 9)...
- 10_Pre ビルド Script.txt
- Xamarin.Android project.txt の11_Build
- 12_Sign APK.txt
- 15_Post ビルド Script.txt
- 20_Post ジョブの Checkout.txt
- 21_Finalize Job.txt
フェーズ 13 は最初にスキップされたので、フェーズ 12 は適切な出発点です。 その後のフェーズもスキップされていますが、関連性は低いと考えられます。
相関コミットの識別
ビルド UI では、現在のビルドに適用できるコミット メッセージとハッシュを表示できます。 この機能を使用して、ビルド結果をトレースし、ソース コードの変更に関連付けることができます。
ハッシュ & コミット メッセージを表示するには、Appcenter.ms - [Organization-Name] -> [App-Name] ->> Build -> [Branch-Name] -> [Build-Number] に移動します。
プロトタイプ URL: https://appcenter.ms/orgs/[ORG-NAME]/apps/[APP-NAME]/build/branchs/[BRANCH-NAME]/builds/[BUILD-NUMBER]
ビルドの情報の上部に、コミットの名前と省略されたハッシュが表示されます。 スクリーンショットでは次のようになっています。
- Xamarin.UITest を 3.0.5 から 3.0.6 にバンプする
- コミット 328ff115
短縮ハッシュをクリックすると、リンクされたリポジトリが同じコミットで開きます。 https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4
次の手順
問題をさらに調査するためのいくつかのオプションを次に示します。
サポートへの連絡
ログイン https://appcenter.ms/apps し、画面の右下隅にあるチャット アイコンをクリックします。 最良の結果を得るには、次の方法でチケットを開くことをお勧めします。
- 観察の概要
- 問題に関する研究の詳細と引用
- 失敗したビルドの URL (アプリ名 & ビルド ID などの重要な情報を含む)
- 失敗と比較するためにビルドを渡すための URL (該当する場合)