Udostępnij za pośrednictwem


Nieudane kompilacje

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Istnieją różne przyczyny niepowodzenia kompilacji, które mogą być unikatowe dla projektu. Zazwyczaj efektywnym sposobem diagnozowania błędów kompilacji jest porównywanie ich z działającą kompilacją. Ten proces może zminimalizować zmienne i zidentyfikować odpowiednie warunki dla danego scenariusza.

Jeśli kompilowanie działa lokalnie, ale nie w Centrum aplikacji

Zazwyczaj ten problem jest spowodowany niezatwierdzonymi plikami, różnymi narzędziami lub nieprzywróconymi zależnościami. Aby to sprawdzić, możesz wykonać pełną operację git clone w nowym folderze. Następnie utwórz kompilację z tą samą konfiguracją co w usłudze App Center w celu porównania.

  1. Otwórz terminal lub wiersz polecenia, a następnie wpisz: mkdir appcenter-test
  2. Następnie zmień katalogi: cd appcenter-test
  3. Sklonuj repozytorium za pomocą polecenia: git clone -b <branch> <remote_repo>
  4. Uruchom świeżo sklonowany projekt w lokalnym środowisku IDE lub wierszu polecenia.
  5. Spróbuj porównać polecenie kompilacji wykonane w centrum aplikacji z poleceniem wykonywanym lokalnie.
  6. Porównaj wersje narzędzi używanych lokalnie z naszymi maszynami kompilacji w chmurze

Pliki ze zmodyfikowanymi nazwami plików lub lokalizacjami są ignorowane

Kompilacje mogą ignorować plik klucza, który został niedawno przeniesiony lub zmieniono jego nazwę. Spróbuj wybrać pozycję Zapisz lub Zapisz & Kompilacja w konfiguracji kompilacji. Każda z opcji ponownie indeksuje drzewo repozytorium i aktualizuje definicję kompilacji.

Znane przyczyny to przenoszenie lub zmienianie nazw skryptów kompilacji & plikównuget.config.

Porównywanie różnych kompilacji w centrum aplikacji

Śledzenie zmian w ustawieniach kompilacji

Konfigurację gałęzi można zarejestrować, wywołując tę metodę interfejsu API: https://openapi.appcenter.ms/#/build/branchConfigurations_get

Interfejs API nie zezwala bezpośrednio na rejestrowanie wcześniejszych konfiguracji. Można jednak uruchomić to polecenie za pomocą niestandardowego skryptu kompilacji , aby kompilacje automatycznie rejestrowały bieżącą konfigurację podczas ich wykonywania.

Śledzenie zmian w usłudze App Center Cloud Build Machines

Podobnie jak w przypadku ustawień kompilacji, możesz sprawdzić bieżące narzędzia, przeglądając ten dokument: Cloud Build Machines.

Można jednak zarejestrować, które z tych narzędzi są dostępne dla określonej kompilacji, uruchamiając to polecenie w skry skryptie kompilacji:

eval cat $HOME/systeminfo.md

Niektóre gałęzie działają, gdy inne kończą się niepowodzeniem

Spróbuj sprawdzić różnice w ustawieniach kompilacji lub zatwierdzony kod między gałęziami. Ponadto jeśli kompilacja rozpoczyna się niepowodzeniem spójnie po pewnym zatwierdzeniu w tej samej gałęzi, warto sprawdzić, jakie zmiany zostały wprowadzone w zatwierdzeniu zakończonym niepowodzeniem.

Kompilacje sporadycznie kończą się niepowodzeniem

Kompilacja może zakończyć się niepowodzeniem bez żadnych zmian w kodzie źródłowym lub ustawieniach kompilacji. Na przykład:

  • Przywrócone różne wersje pakietów
  • Usługi zewnętrzne nie odpowiadają
  • Limit czasu poszczególnych zadań w kompilacji
  • i tak dalej

Spróbuj sprawdzić, czy błąd kompilacji jest spójny, gdy wystąpią błędy.

Izolowanie i interpretowanie komunikatów o błędach

Automatyczne wyróżnianie błędów

Kompilacja usługi App Center automatycznie próbuje wyróżnić typowe komunikaty o błędach lub przydatne dane wyjściowe, aby były bardziej widoczne. Często wskazówki można znaleźć w podstawowym błędzie, rejestrowaniu przed lub w późniejszym czasie rejestrowania. Ta aplikacja jest podpisana przez ustawienia projektu & konfiguracji kompilacji. W związku z tym plik jarsigner systemu Android rejestruje błąd:

Zrzut ekranu przedstawiający wyróżniony błąd

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

Bliższe informacje

Jeśli nie znajdziesz odpowiednich komunikatów o błędach, następnym krokiem jest pobranie dzienników kompilacji, które można wykonać na stronie głównej kompilacji. Otwórz folder o nazwie logs_n > Build i zobaczysz listę oddzielnych plików dziennika wymienionych w kolejności liczbowej. Na przykład:

  • 1_Intialize job.txt
  • 2_Checkout.txt
  • 3_Tag build.txt
  • i tak dalej

Dzienniki są numerowane na podstawie głównych faz kompilacji. Większość błędów kompilacji powoduje pomijanie etapów i pomijanie skojarzonego dziennika:

  • (Kroki 1–9)...
  • 10_Pre build Script.txt
  • 11_Build Xamarin.Android project.txt
  • 12_Sign APK.txt
  • Script.txt kompilacji 15_Post
  • Checkout.txt zadań 20_Post
  • 21_Finalize Job.txt

Faza 13 została pominięta jako pierwsza, więc faza 12 jest dobrym punktem wyjścia. Późniejsze etapy również pominięto, ale są one prawdopodobnie mniej istotne.

Identyfikowanie skorelowanych zatwierdzeń

W interfejsie użytkownika kompilacji można wyświetlić komunikat zatwierdzenia i skrót dotyczący bieżącej kompilacji. Ta funkcja umożliwia śledzenie i korelowanie wyników kompilacji ze zmianami w kodzie źródłowym.

Komunikaty zatwierdzenia można wyświetlić & skrótów, przechodząc do Appcenter.ms —> [Nazwa organizacji] —> [Nazwa aplikacji] —> Kompilacja —> [Nazwa gałęzi] — [Numer kompilacji] —> [Numer kompilacji]

Prototypowy adres URL: https://appcenter.ms/orgs/[NAZWA ORGANIZACJI]/apps/[APP-NAME]/build/branches/[BRANCH-NAME]/builds/[BUILD-NUMBER]

Zrzut ekranu przedstawiający skrót zatwierdzenia & ze źródła

W górnej części informacji o kompilacji zobaczysz nazwę i skrócony skrót zatwierdzenia. Na zrzucie ekranu:

  • Bump Xamarin.UITest z wersji 3.0.5 do 3.0.6
  • Zatwierdzenie 328ff115

Kliknięcie skrótu skróconego powoduje otwarcie połączonego repozytorium w tym samym zatwierdzeniu: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4

Następne kroki

Poniżej przedstawiono kilka opcji dalszej analizy problemu:

Kontaktowanie się z pomocą techniczną

https://appcenter.ms/apps Zaloguj się i kliknij ikonę czatu w prawym dolnym rogu ekranu. Aby uzyskać najlepsze wyniki, dobrym pomysłem jest otwarcie biletu za pomocą polecenia:

  • Podsumowanie obserwacji
  • Szczegóły i cytaty z badań nad problemem
  • Adresy URL niepowodzeń kompilacji, w tym istotne informacje, takie jak nazwa aplikacji & identyfikator kompilacji
  • Adresy URL przekazywania kompilacji w celu porównania z błędami (jeśli dotyczy)