Condividi tramite


Informazioni sul sistema Team Foundation Build

È possibile utilizzare Team Foundation Build per compilare, testare e distribuire il software in un sistema automatizzato e distribuito. Questo software è progettato per supportare sia lo sviluppo software di piccole imprese "start-up" sia l'attività di grandi imprese affermate di sviluppo software. Il sistema è progettato per consentire la scalabilità orizzontale del sistema di compilazione man mano che le dimensioni del team e della codebase aumentano.

In questo argomento

  • Computer di compilazione

    • Servizio Team Foundation Build

    • Utilizzo di macchine virtuali come computer di compilazione

  • Controller di compilazione

  • Agente di compilazione

  • Esempi di topologia del sistema di compilazione

  • Passaggi successivi

Computer di compilazione

Per utilizzare Team Foundation Build, è necessario disporre di almeno un computer di compilazione. Per un progetto software di medie o grandi dimensioni saranno probabilmente necessari più computer di compilazione. Più avanti in questo argomento vengono forniti esempi delle diverse configurazioni del sistema di compilazione.

Un computer di compilazione è un computer nel quale è stato installato e configurato servizio Team Foundation Build. Il computer può essere un computer fisico, ad esempio, un personal computer collocato sotto la scrivania, oppure una workstation in un laboratorio. È inoltre possibile sfruttare la flessibilità di una macchina virtuale utilizzandola come un computer di compilazione.

Nota

È possibile configurare un computer di compilazione ad hoc su qualsiasi computer disponibile. Un singolo sviluppatore che dispone, ad esempio, di un computer aggiuntivo potrebbe configurarlo come un computer di compilazione per utilizzare le funzionalità di servizio Team Foundation Build.

Anche se si configura, si modifica e si gestisce un computer di compilazione direttamente sul computer nel quale viene eseguito servizio Team Foundation Build, i dati di configurazione vengono archiviati nell'insieme di progetti team.

Servizio Team Foundation Build

Per impostare un computer di compilazione, è necessario installare, configurare ed eseguire servizio Team Foundation Build.

servizio Team Foundation Build è un servizio di Windows elencato in diverse posizioni all'interno del sistema operativo. La posizione in cui viene elencato varia a seconda che servizio Team Foundation Build venga eseguito come servizio di Windows o come servizio interattivo. Per ulteriori informazioni sull'impostazione di questa opzione, vedere Configurare un computer di compilazione.

Quando il servizio Team Foundation Build viene eseguito come un servizio di Windows:

  • Nel nodo Servizi, servizio Team Foundation Build viene elencato come Host del servizio Visual Studio Team Foundation Build. Il nodo Servizi può essere visualizzato in una delle posizioni riportate di seguito.

    • In un sistema operativo server, ad esempio Windows Server 2008, in Server Manager

    • In un sistema operativo client, ad esempio Windows Vista, in Gestione computer

  • In Gestione attività servizio Team Foundation Build viene elencato come Host del servizio Visual Studio Team Foundation Build nella scheda Servizi.

Nota

È possibile arrestare o riavviare il servizio di compilazione dalle posizioni elencate precedentemente. Arrestando o riavviando il servizio, il computer di compilazione viene arrestato o riavviato efficacemente. Tuttavia, è possibile gestire un computer di compilazione in modo più efficiente utilizzando la Console di amministrazione di Team Foundation. Per ulteriori informazioni, vedere Gestire il sistema di compilazione.

Se il servizio Team Foundation Build viene eseguito come un servizio interattivo:

  • In Gestione attività servizio Team Foundation Build viene elencato come TFSBuildServiceHost nella scheda Applicazioni.

Utilizzo di macchine virtuali come computer di compilazione

È possibile distribuire servizio Team Foundation Build su una macchina virtuale, ad esempio, una macchina virtuale Hyper-V in esecuzione in un computer fisico che esegue Windows Server 2008. Seguendo questa strategia, è possibile eseguire facilmente le attività riportate di seguito.

  • Compilare nuovamente il sistema da uno stato qualsiasi e in qualsiasi momento. Se, ad esempio, il sistema viene danneggiato, è possibile ripristinare rapidamente uno snapshot di un ambiente pulito e compilare di nuovo il sistema.

  • Creare uno snapshot di una macchina virtuale, esportarlo e archiviarlo o condividerlo con un altro membro del team.

Il principale svantaggio che deriva dall'utilizzo di una macchina virtuale è il funzionamento più lento rispetto a un computer fisico. Se la quantità di lavoro richiesta dalle compilazioni è limitata o se le compilazioni non vengono eseguite frequentemente (ad esempio, di notte), una macchina virtuale può essere sufficiente come computer di compilazione per il sistema.

È possibile effettuare le attività riportate di seguito per migliorare le prestazioni di servizio Team Foundation Build quando viene eseguito in una macchina virtuale.

  • Eseguire le macchine virtuali su un computer fisico dotato di un processore multicore. Se, ad esempio, il computer fisico è dotato di un processore quad core, è possibile eseguire contemporaneamente quattro macchine virtuali che forniranno ottime prestazioni come computer di compilazione in molte situazioni.

  • Dedicare e montare un disco rigido fisico per ogni macchina virtuale.

Controller di compilazione

Ogni controller di compilazione è dedicato a un unico insieme di progetti team. Il controller accetta richieste di compilazione da qualsiasi progetto team in un insieme specificato di progetti team.

Ogni controller di compilazione crea un pool dei servizi di uno o più agenti di compilazione e li gestisce. Distribuisce il lavoro che richiede un utilizzo intensivo del processore, ad esempio la compilazione di codice e l'esecuzione di test, agli agenti di compilazione inclusi nel pool.

Il controller di compilazione elabora il flusso di lavoro e in genere esegue il lavoro prevalentemente leggero, ad esempio determinare il nome della compilazione, creare l'etichetta nel controllo della versione, registrare note e segnalare lo stato della compilazione.

Poiché un controller di compilazione in genere non richiede un utilizzo intensivo del processore, è spesso sufficiente utilizzare una macchina virtuale come piattaforma per tale controller di compilazione. In determinate situazioni tuttavia un controller di compilazione può richiedere una significativa quantità di memoria. È pertanto necessario assicurarsi di dotare di memoria sufficiente il computer fisico o la macchina virtuale in cui si configurano i controller di compilazione.

Agente di compilazione

Ogni agente di compilazione è dedicato e viene controllato da un unico controller di compilazione. L'agente di compilazione esegue il lavoro che richiede un utilizzo intensivo del processore e del disco. Tale lavoro include l'estrazione e l'archiviazione di file nel controllo della versione, il provisioning dell'area di lavoro, la compilazione del codice e l'esecuzione di test.

Quando si assembla un sistema di compilazione, è possibile iniziare con alcuni agenti, quindi utilizzare la scalabilità orizzontale del sistema di compilazione aggiungendo più agenti di compilazione man mano che si aggiungono membri del team, che crescono le dimensioni della codebase e che aumenta il lavoro che deve essere eseguito dal sistema di compilazione.

Se si configurano gli agenti in modo che dispongano di funzionalità specializzate, sarà necessario assegnare tag a tali agenti. Seguendo questa strategia, è possibile quindi creare definizioni di compilazione in grado di utilizzare questi agenti specializzati. È possibile, ad esempio, applicare il tag del test di verifica della compilazione a un pool di agenti progettati per eseguire tali test di verifica. Sarà quindi possibile definire una compilazione notturna che utilizzi solo questi agenti di compilazione.

Poiché gli agenti di compilazione eseguono la maggior parte del lavoro che richiede un utilizzo intensivo del processore, sarà necessario assicurarsi che il computer di compilazione disponga di hardware sufficientemente potente per consentire all'agente di compilazione di eseguire il lavoro in un periodo di tempo accettabile.

Esempi di topologia del sistema di compilazione

servizio Team Foundation Build è progettato in modo consentire di iniziare con un sistema di compilazione di minori dimensioni e complessità. Con l'espansione della codebase e la crescita del team, è possibile espandere il sistema in modo incrementale con relativa facilità aggiungendo computer di compilazione al sistema già esistente.

Sistema con un solo computer (condiviso con il livello applicazione)

La configurazione riportata di seguito consente di supportare un team molto piccolo, in particolare un team che esegue compilazioni raramente e solo in orari non di ufficio. Viene ad esempio eseguita una singola compilazione notturna.

Sistema con un solo computer a livello applicazione

Nella maggior parte dei casi, una topologia con un solo computer di compilazione non è sufficiente a causa dei motivi riportati di seguito.

  • L'agente di compilazione richiede un utilizzo intensivo di risorse del processore, causando una significativa riduzione delle prestazioni del livello applicazione.

  • Il controller di compilazione può avere un notevole impatto sulla memoria di sistema, specialmente se gestisce contemporaneamente molti agenti di compilazione attivi.

  • L'installazione di servizio Team Foundation Build aumenta la superficie di attacco di un computer di compilazione. Un utente malintenzionato, ad esempio, potrebbe costruire una definizione di compilazione per eseguire codice arbitrario in modo da assumere il controllo del server e appropriarsi dei dati.

Sistema con un solo computer (autonomo)

La configurazione seguente costituisce un punto di partenza per un piccolo team.

Sistema con un solo computer (autonomo)

Poiché il lavoro che richiede un utilizzo intensivo del processore viene eseguito dagli agenti di compilazione su un computer separato, l'esecuzione delle compilazioni non influisce sulle prestazioni del livello applicazione.

È inoltre possibile eseguire il controller di compilazione sul computer di compilazione dedicato. Tuttavia, la configurazione mostrata nell'illustrazione presenta il vantaggio rendere meno distruttive le modifiche apportate al sistema di compilazione, come quando è necessario riparare o sostituire il computer di compilazione.

La presenza del controller di compilazione sullo stesso computer del livello applicazione non è generalmente un problema dal punto di vista del processore. È tuttavia possibile passare a una topologia più scalabile per i seguenti motivi:

  • Il controller di compilazione può avere un notevole impatto sulla memoria di sistema, specialmente se gestisce contemporaneamente molti agenti di compilazione attivi.

  • L'installazione di servizio Team Foundation Build aumenta la superficie di attacco di un computer di compilazione. Un utente malintenzionato, ad esempio, potrebbe costruire una definizione di compilazione per eseguire codice arbitrario in modo da assumere il controllo del server e appropriarsi dei dati.

Sistema con più computer

Il supporto delle attività dei team di medie e grandi dimensioni richiede in genere più computer di compilazione. Nell'esempio seguente vengono distribuiti due computer di compilazione.

Sistema con più computer

L'utilizzo di più computer di compilazione consente di dedicare ogni computer a uno scopo diverso, come descritto nell'esempio riportato di seguito.

  • Un computer di compilazione può essere dedicato agli agenti di compilazione che elaborano continue compilazioni di integrazione. Il team ha l'esigenza che le compilazioni di questo tipo, specialmente quelle di archiviazione gestita, vengano eseguite rapidamente in modo da non dover sospendere il lavoro in attesa di una compilazione. Per assicurarsi che le compilazioni vengano eseguite rapidamente, è consigliabile utilizzare le impostazioni dei parametri del processo di compilazione. Queste impostazioni possono consentire di evitare la pulizia dell'area di lavoro, eseguire solo test della massima priorità e impostare un basso valore per il Tempo massimo di esecuzione.

  • Un altro computer di compilazione può essere dedicato alle compilazioni pianificare e ad hoc che richiedono tempi di elaborazione molto lunghi. Le definizioni di compilazione destinate agli agenti di compilazione su questo computer, ad esempio, possono essere configurate in modo da pulire l'area di lavoro, eseguire tutti i test nonché l'analisi codice.

Sistema con più computer e più controller

Nell'esempio di topologia seguente possono essere supportati progetti software di livello aziendale.

Sistema con più computer e più controller

Ogni insieme di progetti team deve disporre di un controller di compilazione, come mostrato nell'illustrazione. Notare come questa topologia isoli i computer di compilazione. I membri del team che operano con la raccolta di progetti team A possono utilizzare solo gli agenti di compilazione controllati dal controller di compilazione A.

Passaggi successivi

Dopo avere appreso il funzionamento di un sistema Team Foundation Build, è possibile passare alle operazioni successive.