Condividi tramite


Compilazioni non riuscite

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

Esistono diversi motivi per cui la compilazione potrebbe avere avuto esito negativo che potrebbe essere univoca per il progetto. In genere, è possibile diagnosticare gli errori di compilazione in modo efficiente confrontandoli con una compilazione funzionante. Questo processo può ridurre al minimo le variabili e identificare le condizioni pertinenti per lo scenario.

Se la compilazione funziona in locale ma non in App Center

In genere questo problema è dovuto a file non inviati, strumenti diversi o dipendenze non ripristinate. Per verificare, è possibile eseguire un git clone completo del progetto in una nuova cartella. Eseguire quindi la compilazione con la stessa configurazione di App Center per confronto.

  1. Aprire il terminale o il prompt della riga di comando e quindi digitare: mkdir appcenter-test
  2. Modificare quindi le directory: cd appcenter-test
  3. Clonare il repository con: git clone -b <branch> <remote_repo>
  4. Avviare il progetto appena clonato nell'IDE locale o nella riga di comando.
  5. Provare a confrontare il comando di compilazione eseguito in App Center con il comando eseguito in locale.
  6. Confrontare le versioni degli strumenti in uso in locale con le macchine di compilazione cloud

I file con nomi file o percorsi modificati vengono ignorati

Le compilazioni potrebbero ignorare un file di chiave spostato o rinominato di recente. Provare a selezionare Salva o Salva & Compila nella configurazione della compilazione. Entrambe le opzioni reindicizzare l'albero del repository e aggiornare la definizione di compilazione.

Le cause note sono lo spostamento o la ridenominazione degli script di compilazione & file dinuget.config.

Confronto di compilazioni diverse in App Center

Rilevamento delle modifiche nelle impostazioni di compilazione

È possibile registrare la configurazione del ramo chiamando questo metodo API: https://openapi.appcenter.ms/#/build/branchConfigurations_get

L'API non consente direttamente la registrazione delle configurazioni precedenti. Tuttavia, è possibile eseguire questo comando con uno script di compilazione personalizzato in modo che le compilazioni registrino automaticamente la configurazione corrente al momento dell'esecuzione.

Rilevamento delle modifiche nelle macchine virtuali di compilazione cloud di App Center

Analogamente alle impostazioni di compilazione, è possibile controllare gli strumenti correnti esaminando questo documento: Macchine di compilazione cloud.

È tuttavia possibile registrare quali di questi strumenti sono disponibili per una particolare compilazione eseguendo questo comando in uno script di compilazione:

eval cat $HOME/systeminfo.md

Alcuni rami funzionano mentre altri hanno esito negativo

Provare a verificare le differenze nelle impostazioni di compilazione o nel codice di cui è stato eseguito il commit tra i rami. Inoltre, se la compilazione viene avviata in modo coerente dopo un determinato commit nello stesso ramo, vale la pena verificare quali modifiche sono state apportate nel commit con esito negativo.

Le compilazioni hanno esito negativo in modo intermittente

Una compilazione può avere esito negativo senza alcuna modifica nel codice sorgente o nelle impostazioni di compilazione. Ad esempio:

  • Versioni diverse dei pacchetti ripristinati
  • Servizi esterni che non rispondono
  • Singole attività nel timeout della compilazione
  • E così via

Provare a verificare se l'errore per la compilazione è coerente quando si verificano gli errori.

Isolamento e interpretazione dei messaggi di errore

Evidenziazione automatica degli errori

La compilazione di App Center tenta automaticamente di evidenziare i messaggi di errore comuni o un output utile per renderlo più visibile. Spesso si possono trovare indizi nell'errore principale, nella registrazione prima o nella registrazione successiva. Questa app è firmata da entrambe le impostazioni del progetto & configurazione della compilazione. Il jarsigner Android registra quindi un errore:

Screenshot dell'errore evidenziato

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

Approfondimenti

Se non vengono visualizzati messaggi di errore pertinenti, il passaggio successivo consiste nel scaricare i log di compilazione, che è possibile eseguire dalla pagina di compilazione principale. Aprire la cartella denominata logs_n > Build e verrà visualizzato un elenco di file di log separati elencati in ordine numerico. Ad esempio:

  • 1_Intialize job.txt
  • 2_Checkout.txt
  • 3_Tag build.txt
  • E così via

I log vengono numerati in base alle fasi principali della compilazione. La maggior parte degli errori di compilazione causa il salto di fasi e l'omissione conseguente dei log associati:

  • (Passaggi da 1 a 9)...
  • 10_Pre Script.txt di compilazione
  • 11_Build project.txt Xamarin.Android
  • 12_Sign APK.txt
  • 15_Post Script.txt di compilazione
  • Checkout.txt processo di 20_Post
  • 21_Finalize Job.txt

La fase 13 è stata ignorata per prima, quindi la fase 12 è un buon punto di partenza. Anche le fasi successive sono state saltate, ma è meno probabile che siano pertinenti.

Identificazione dei commit correlati

Nell'interfaccia utente di compilazione è possibile visualizzare il messaggio di commit e l'hash applicabili alla compilazione corrente. È possibile usare questa funzionalità per tracciare e correlare i risultati della compilazione alle modifiche nel codice sorgente.

È possibile visualizzare i messaggi di commit & hash passando a Appcenter.ms -> [Organization-Name] - [App-Name] ->> Build -> [Branch-Name] -> [Build-Number]

URL prototipo: https://appcenter.ms/orgs/[ORG-NAME]/apps/[APP-NAME]/build/branches/[BRANCH-NAME]/builds/[BUILD-NUMBER]

Screenshot che mostra il commit & hash dall'origine

Nella parte superiore delle informazioni per la compilazione verranno visualizzati il nome e l'hash abbreviato del commit. Nello screenshot:

  • Passare da Xamarin.UITest da 3.0.5 a 3.0.6
  • Commit 328ff115

Facendo clic sull'hash abbreviato si apre il repository collegato nello stesso commit: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4

Passaggi successivi

Ecco alcune opzioni per cercare ulteriormente il problema:

Contattare il supporto tecnico

https://appcenter.ms/apps Accedere e fare clic sull'icona della chat nell'angolo inferiore destro della schermata. Per ottenere risultati ottimali, è consigliabile aprire il ticket con:

  • Riepilogo delle osservazioni
  • Dettagli e citazioni della tua ricerca sul problema
  • URL a compilazioni non riuscite, incluse informazioni essenziali come il nome dell'app & ID di compilazione
  • URL da passare compilazioni da confrontare con gli errori (se applicabile)