Specificare trigger e motivi di compilazione

È possibile accodare manualmente una compilazione ogni qualvolta è necessario, ma nella maggior parte dei casi le esigenze del team saranno soddisfatte in modo ottimale da processi di compilazione definiti con trigger automatici. Quando viene attivata una compilazione, un motivo specifico viene registrato nella proprietà Reason. In questo argomento viene descritto e illustrato come utilizzare tutti i trigger e i motivi di compilazione disponibili quando si sviluppa il processo di compilazione.

  • Utilizzare i trigger di compilazione per raggiungere gli obiettivi del team

    • Proteggere il team da interruzioni di compilazione

    • Mantenere la qualità tramite l'integrazione continuata

    • Controllare la qualità del prodotto mediante l'esecuzione di test di verifica della compilazione notturni

  • Utilizzare trigger di compilazione automatica

    • Utilizzare il trigger Integrazione continuata per accodare una compilazione quando viene archiviata una modifica

    • Utilizzare il trigger Compilazioni in corso per accodare una compilazione quando una modifica viene archiviata con limiti relativi alla frequenza di esecuzione della compilazione

    • Utilizzare il trigger Archiviazione gestita per accodare una compilazione quando un membro del team tenta di archiviare una modifica e blocca la modifica se la compilazione non funziona

    • Utilizzare il trigger Pianifica per accodare una compilazione a intervalli regolari

  • Accodare manualmente una compilazione

    • Accodare una compilazione

    • Accodare una compilazione privata

  • Utilizzare codice personalizzato per accodare una compilazione

  • Utilizzare trigger e motivi di compilazione

Utilizzare i trigger di compilazione per raggiungere gli obiettivi del team

Proteggere il team da interruzioni di compilazione

L'archiviazione da parte di uno sviluppatore di modifiche che interrompono la compilazione può comportare difficoltà significative per i piccoli team e causare costi notevoli ai team più grandi in termini di perdita di produttività e ritardi di pianificazione. È possibile utilizzare il trigger Archiviazione gestita per preservare l'intera codebase o parte di essa da questo problema.

Mantenere la qualità tramite l'integrazione continuata

Per integrazione continuata si intende il processo di integrazione del codice, eseguito il più spesso possibile, in un repository condiviso. Durante l'integrazione del codice, un'interruzione di compilazione o un errore del test può notificare tempestivamente un errore nel codice. È possibile utilizzare il trigger Integrazione continuata per implementare tale processo. Il trigger Compilazione in corso è simile al trigger Integrazione continuata e può essere utile se non si dispone di un sistema di compilazione sufficientemente potente per eseguire una compilazione ogni volta che si verifica un'archiviazione.

Il trigger Archiviazione gestita può essere utile come un approccio ancora più rigoroso all'integrazione continuata. Il trigger Integrazione continuata avvisa il team in caso di problemi, ad esempio interruzioni di compilazione o unit test principali non completati, tuttavia il trigger Archiviazione gestita blocca questi tipi di problemi evitando di introdurli nella codebase.

Per ulteriori informazioni sull'utilizzo del sistema di computazione per supportare l'integrazione continuata, vedere Configurare una compilazione CI.

Controllare la qualità del prodotto mediante l'esecuzione di test di verifica della compilazione notturni

È possibile pianificare esecuzioni di test normali per valutare la qualità della compilazione. Questi test sono spesso chiamati test di verifica della compilazione o smoke test. Questi test sono in genere costituiti da un ampio gruppo di test utilizzati per verificare aree chiave di un'applicazione in una compilazione specifica. È possibile utilizzare il trigger Pianifica per implementare un'esecuzione del test di verifica della compilazione notturna.

Per informazioni sul trigger Pianifica, vedere Utilizzare il trigger Pianifica per accodare una compilazione a intervalli regolari.

Utilizzare trigger di compilazione automatica

È necessario specificare un trigger di compilazione per la definizione di compilazione. Nella maggior parte dei casi, può essere necessario che il processo di compilazione venga eseguito automaticamente. È possibile selezionare uno dei trigger automatici descritti in questa sezione.

Utilizzare il trigger Integrazione continuata per accodare una compilazione quando viene archiviata una modifica

Se si definisce una compilazione con il trigger Integrazione continuata, la compilazione viene accodata ogni volta che un membro del team archivia una modifica. La definizione di compilazione Area di lavoro determina i file che attivano la definizione di compilazione. Per ulteriori informazioni sulle aree di lavoro di compilazione, vedere Utilizzare aree di lavoro di compilazione.

Alle compilazioni attivate dal trigger Integrazione continuata viene assegnata una proprietà Reason di tipo IndividualCI.

Utilizzare il trigger Compilazioni in corso per compilare assieme più archiviazioni a intervalli regolari

Se si definisce una compilazione con il trigger Compilazioni in corso, il sistema di compilazione accoda una compilazione di ogni archiviazione finché la compilazione non è in esecuzione. Se la compilazione è in esecuzione, il sistema attende finché la compilazione non è completata, quindi accoda un'altra compilazione di tutte le archiviazioni non ancora compilate. È inoltre possibile limitare la frequenza delle compilazioni selezionando la casella di controllo Frequenza di compilazione non superiore a n minuti e digitando un valore intero compreso tra 0 e 2147483647.

Ad esempio, è possibile avere un solo agente di compilazione, che potrebbe completare la compilazione ogni 20 minuti. Se si utilizza il trigger Integrazione continuata e il team archivia il codice nove volte tra le 10.00 e le 11.00, l'ultima archiviazione potrebbe non essere compilata fino alle 13.00. Tuttavia, se si utilizza il trigger Compilazioni in corso e si specificano 60 minuti come intervallo, lo stesso set di archiviazioni può essere compilato entro le 11.20.

La definizione di compilazione Area di lavoro determina i file che attivano la definizione di compilazione. Per ulteriori informazioni sulle aree di lavoro di compilazione, vedere Utilizzare aree di lavoro di compilazione.

Alle compilazioni attivate dal trigger Compilazioni in corso viene assegnata una proprietà Reason di tipo BatchedCI.

Utilizzare il trigger Archiviazione gestita per accodare una compilazione quando un membro del team tenta di archiviare una modifica e di bloccare la modifica se la compilazione non funziona

È possibile utilizzare il trigger solo in un TFVC icon Progetto team TFVC. Non è disponibile in un Git icon Progetto team Git.

Se si definisce una compilazione con il trigger Archiviazione gestita, le modifiche che un membro del team invia al sistema di controllo della versione vengono inserite in uno shelveset e accodate in attesa di essere compilate. Affinché il processo di archiviazione venga completato, è necessario che anche la compilazione sia completata correttamente. La definizione di compilazione Area di lavoro determina i file controllati dalla definizione di compilazione. Per ulteriori informazioni sulle aree di lavoro di compilazione, vedere Utilizzare aree di lavoro di compilazione.

Alle compilazioni attivate dal trigger Archiviazione gestita viene assegnata una proprietà Reason di tipo CheckInShelveset.

Per ulteriori informazioni su come implementare il trigger Archiviazione gestita, vedere Utilizzare un processo di compilazione di archiviazione gestita per convalidare le modifiche. Per ulteriori informazioni sull'impatto di questo tipo definizione di compilazione sull'attività del team, vedere Archiviare modifiche in sospeso controllate da una compilazione di archiviazione gestita.

Utilizzare il trigger Pianifica per accodare una compilazione a intervalli regolari

Trigger Pianifica

Se si definisce una compilazione con il trigger Pianifica e si deseleziona la casella di controllo Compila anche se non è stato modificato nulla rispetto alla compilazione precedente, una compilazione viene accodata nei giorni e negli orari specificati se sono state archiviate modifiche dall'esecuzione più recente di questa definizione di compilazione. La compilazione viene accodata indipendentemente dall'associazione delle modifiche all'ultima compilazione valida.

Alle compilazioni attivate in questo modo viene assegnata una proprietà Reason di tipo Schedule.

Suggerimento

Se si sviluppa un modello di processo di compilazione personalizzato e si seleziona Schedule come valore della proprietà Reason di una sezione InvokeForReason del modello, nella maggior parte dei casi sarà probabilmente necessario selezionare anche ScheduleForced.

Trigger Pianifica (Motivo: ScheduleForced)

Se si definisce una compilazione con il trigger Pianifica e si seleziona la casella di controllo Compila anche se non è stato modificato nulla rispetto alla compilazione precedente, una compilazione viene accodata nei giorni e negli orari specificati. La compilazione viene accodata indipendentemente dall'archiviazione delle modifiche.

Alle compilazioni attivate in questo modo viene assegnata una proprietà Reason di tipo ScheduleForced.

Suggerimento

Se si sviluppa un modello di processo di compilazione personalizzato e si seleziona ScheduleForced come valore della proprietà Reason di una sezione InvokeForReason del modello, nella maggior parte dei casi sarà probabilmente necessario selezionare anche Schedule.

Accodare manualmente una compilazione

In alcune situazioni è possibile che non si desideri eseguire automaticamente un processo di compilazione.

  • La definizione di compilazione potrebbe non essere pronta per le esecuzioni automatiche essendo ancora in fase di sviluppo.

  • Potrebbe essere disponibile un processo di compilazione speciale che si desidera eseguire solo manualmente.

In queste situazioni, è possibile selezionare il trigger Manuale. La definizione di compilazione verrà eseguita solo quando viene accodata manualmente da un membro del team.

Accodare una compilazione

È possibile accodare manualmente qualsiasi definizione di compilazione, anche se viene definita con un trigger di compilazione diverso da Manuale. Quando si accoda manualmente una compilazione, Reason viene impostata su Manual. Per ulteriori informazioni su come accodare manualmente una compilazione, vedere Accodare una compilazione.

Accodare una compilazione privata

Se si desidera compilare le modifiche inserite in uno shelveset, è possibile utilizzare una compilazione privata (denominata anche "compilazione degli utenti") per convalidare le modifiche al codice prima di eseguirne l'archiviazione. Quando si accoda manualmente una compilazione privata, Reason viene impostata su ValidateShelveset. Per ulteriori informazioni su come accodare una compilazione privata, vedere Accodare una compilazione.

Utilizzare codice personalizzato per creare una compilazione completata

È possibile sviluppare codice personalizzato per creare una compilazione completata utilizzando le classi dello spazio dei nomi Microsoft.TeamFoundation.Build. Quando una compilazione viene accodata in questo modo, la proprietà Reason viene impostata su UserCreated. Per ulteriori informazioni, vedere la pagina Estensione di Team Foundation: compilazione

Utilizzare trigger e motivi di compilazione

È possibile utilizzare i trigger e i motivi del processo di compilazione nei modi seguenti:

  • Impostare il trigger per il processo di compilazione: nella definizione di compilazione fare clic sulla scheda Trigger, quindi selezionare il trigger che meglio soddisfa le esigenze del team. Per ulteriori informazioni sulla creazione di una definizione di compilazione, vedere Creare o modificare una definizione di compilazione.

  • Definire i motivi di compilazione accettati da un processo di compilazione personalizzato: è possibile utilizzare l'attività InvokeForReason per racchiudere un segmento del processo di compilazione che si desidera eseguire solo nelle compilazioni eseguite per un motivo particolare. Per ulteriori informazioni, vedere la pagina Attività Team Foundation Build: InvokeForReason.