Share via


Agenti Linux self-hosted (2.x)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Importante

Questo articolo fornisce indicazioni per l'uso del software dell'agente versione 2.x con Azure DevOps Server e TFS. Se si usa Azure DevOps Services, vedere Agenti Linux self-hosted.

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.

Per eseguire i processi, è necessario almeno un agente. Un agente Linux può compilare e distribuire diversi tipi di app, incluse le app Java e Android. Sono supportati Ubuntu, Red Hat e CentOS.

Prima di iniziare:

  • Se le pipeline si trovano in Azure Pipelines e un agente ospitato da Microsoft soddisfa le proprie esigenze, è possibile ignorare la configurazione di un agente Linux privato.
  • In caso contrario, si è arrivati al posto giusto per configurare un agente in Linux. Continuare con la sezione successiva.

Informazioni sugli agenti

Se si conosce già cos'è un agente e come funziona, è possibile passare direttamente alle sezioni seguenti. Tuttavia, per altre informazioni su come funzionano e su come funzionano, vedere Gli agenti di Azure Pipelines.

Verificare i prerequisiti

L'agente si basa su .NET Core 3.1. È possibile eseguire questo agente in diverse distribuzioni Linux. È supportato il sottoinsieme seguente di distribuzioni supportate da .NET Core:

  • x64
    • CentOS 7, 6 (vedere la nota 1)
    • Debian 9
    • Fedora 30, 29
    • Linux Mint 18, 17
    • openSU edizione Standard 42.3 o versione successiva
    • Oracle Linux 8, 7
    • Red Hat Enterprise Linux 8, 7, 6 (vedere la nota 1)
    • SU edizione Standard Enterprise Linux 12 SP2 o versione successiva
    • Ubuntu 20.04, 18.04, 16.04
    • Azure Linux 1.0 (vedere la nota 3)
  • ARM32 (vedere la nota 2)
    • Debian 9
    • Ubuntu 18.04
  • ARM64
    • Debian 9
    • Ubuntu 21.04, 20.04, 18.04

Nota

Nota 1: RHEL 6 e CentOS 6 richiedono l'installazione della versione specializzata rhel.6-x64 dell'agente.

Importante

A partire da febbraio 2023, non più le versioni dell'agente supportano RHEL 6. Per altre informazioni, vedere Clienti che usano Red Hat Enterprise Linux (RHEL) 6 devono aggiornare il sistema operativo negli agenti self-hosted.

Nota

Nota 2: è necessario il set di istruzioni ARM ARMv7 o versione successiva. Eseguire uname -a per visualizzare il set di istruzioni della distribuzione Linux.

Nota

La distribuzione del sistema operativo Linux di Azure attualmente include il supporto parziale dell'agente Azure DevOps. Viene fornito un meccanismo per il rilevamento di questa distribuzione del sistema operativo nello installdependencies.sh script, ma a causa della mancanza di supporto dal lato .Net Core, non è stato possibile garantire l'operabilità completa di tutte le funzioni dell'agente durante l'esecuzione in questa distribuzione del sistema operativo.

Indipendentemente dalla piattaforma, sarà necessario installare Git 2.9.0 o versione successiva. È consigliabile installare la versione più recente di Git.

Nota

Il programma di installazione dell'agente sa come verificare la presenza di altre dipendenze. È possibile installare queste dipendenze nelle piattaforme Linux supportate eseguendo ./bin/installdependencies.sh nella directory dell'agente.

Tenere presente che alcune di queste dipendenze richieste da .NET Core vengono recuperate da siti di terze parti, ad esempio packages.efficios.com. Esaminare lo installdependencies.sh script e verificare che tutti i siti di terze parti a cui si fa riferimento siano accessibili dal computer Linux prima di eseguire lo script.

Assicurarsi anche che tutti i repository necessari siano connessi alla gestione pacchetti pertinente usata in installdependencies.sh (ad esempio apt o zypper).

Per problemi di installazione delle dipendenze, ad esempio "dipendenza non trovata nel repository" o "problema di recupero del file di indice del repository", è possibile contattare il proprietario della distribuzione per ulteriore supporto.

Subversion

Se si esegue la compilazione da un repository Subversion, è necessario installare il client Subversion nel computer.

È consigliabile eseguire manualmente l'installazione dell'agente la prima volta. Dopo aver appreso il funzionamento degli agenti o se si vuole automatizzare la configurazione di molti agenti, è consigliabile usare la configurazione automatica.

Controllo della versione di Team Foundation

Se si usa TFVC, sarà necessario anche Oracle Java JDK 1.6 o versione successiva. A questo scopo, Oracle JRE e OpenJDK non sono sufficienti.

Il plug-in T edizione Enterprise viene usato per la funzionalità TFVC. Ha un contratto di licenza, che sarà necessario accettare durante la configurazione se si prevede di usare TFVC.

Poiché il plug-in T edizione Enterprise non è più gestito e contiene alcune dipendenze Java non aggiornate, a partire da Agent 2.198.0 non è più incluso nella distribuzione dell'agente. Tuttavia, il plug-in T edizione Enterprise verrà scaricato durante l'esecuzione dell'attività di checkout se si sta controllando un repository TFVC. Il plug-in T edizione Enterprise verrà rimosso dopo l'esecuzione del processo.

Nota

Nota: è possibile notare che l'attività di checkout richiede molto tempo per iniziare a funzionare a causa di questo meccanismo di download.

Se l'agente è in esecuzione dietro un proxy o un firewall, è necessario garantire l'accesso al sito seguente: https://vstsagenttools.blob.core.windows.net/. Il plug-in T edizione Enterprise verrà scaricato da questo indirizzo.

Se si usa un agente self-hosted e si riscontrano problemi con il download T edizione Enterprise, è possibile installare T edizione Enterprise manualmente:

  1. Impostare la DISABLE_TEE_PLUGIN_REMOVAL variabile dell'ambiente o della pipeline su true. Questa variabile impedisce all'agente di rimuovere il plug-in T edizione Enterprise dopo il checkout del repository TFVC.
  2. Scaricare T edizione Enterprise-CLC versione 14.135.0 manualmente dalle versioni di Team Explorer Everywhere gitHub.
  3. Estrarre il contenuto della TEE-CLC-14.135.0 cartella in <agent_directory>/externals/tee.

Preparare le autorizzazioni

Sicurezza delle informazioni per gli agenti self-hosted

L'utente che configura l'agente richiede autorizzazioni di amministratore del pool, ma l'utente che esegue l'agente non lo esegue.

Le cartelle controllate dall'agente devono essere limitate al minor numero possibile di utenti e contengono segreti che potrebbero essere decrittografati o esfiltrati.

L'agente di Azure Pipelines è un prodotto software progettato per eseguire il codice scaricato da origini esterne. È intrinsecamente un obiettivo per gli attacchi REMOTE Code Execution (RCE).

È quindi importante considerare il modello di minaccia che circonda ogni singolo utilizzo degli agenti pipeline per eseguire il lavoro e decidere quali sono le autorizzazioni minime che possono essere concesse all'utente che esegue l'agente, al computer in cui viene eseguito l'agente, agli utenti che hanno accesso in scrittura alla definizione della pipeline, ai repository Git in cui è archiviato il yaml, o il gruppo di utenti che controllano l'accesso al pool per le nuove pipeline.

È consigliabile che l'identità che esegue l'agente sia diversa dall'identità con le autorizzazioni per connettere l'agente al pool. L'utente che genera le credenziali (e altri file correlati all'agente) è diverso dall'utente che deve leggerli. Pertanto, è più sicuro considerare attentamente l'accesso concesso al computer agente stesso e le cartelle dell'agente che contengono file sensibili, ad esempio log e artefatti.

È opportuno concedere l'accesso alla cartella dell'agente solo per gli amministratori DevOps e l'identità utente che esegue il processo dell'agente. Amministrazione istrators potrebbe dover analizzare il file system per comprendere gli errori di compilazione o ottenere i file di log per poter segnalare gli errori di Azure DevOps.

Decidere quale utente si userà

Come passaggio una tantum, è necessario registrare l'agente. Un utente autorizzato ad amministrare la coda dell'agente deve completare questi passaggi. L'agente non userà le credenziali di questa persona nel funzionamento quotidiano, ma è necessario completare la registrazione. Altre informazioni sul modo in cui gli agenti comunicano.

Eseguire l'autenticazione con un token di accesso personale

  1. Accedere con l'account utente che si prevede di usare nel portale Web di Azure DevOps Server (https://{your-server}/DefaultCollection/).
  1. Accedere con l'account utente che si intende usare nell'organizzazione di Azure DevOps (https://dev.azure.com/{your_organization}).
  1. Dalla home page aprire il profilo. Passare ai dettagli di sicurezza.

    Passare ai dettagli di sicurezza.

  2. Creare un token di accesso personale.

    Creare un token di accesso personale.

    Nota

    Se si sta configurando un agente del gruppo di distribuzione o se viene visualizzato un errore durante la registrazione di una risorsa di ambiente vm, è necessario impostare l'ambito pat su Tutte le organizzazioni accessibili. Screenshot dell'impostazione dell'ambito pat su tutte le organizzazioni accessibili.

  1. Nella home page aprire le impostazioni utente e quindi selezionare Token di accesso personali.

    Passare ai dettagli di sicurezza.

  2. Creare un token di accesso personale.

    Creare un token di accesso personale.

  1. Per l'ambito selezionare Pool di agenti (lettura, gestione) e assicurarsi che tutte le altre caselle siano deselezionate. Se si tratta di un agente del gruppo di distribuzione, per l'ambito selezionare Gruppo di distribuzione (lettura, gestione) e assicurarsi che tutte le altre caselle siano deselezionate.

    Selezionare Mostra tutti gli ambiti nella parte inferiore della finestra Crea un nuovo token di accesso personale per visualizzare l'elenco completo degli ambiti.

  2. Copiare il token. Questo token verrà usato quando si configura l'agente.

Verificare che l'utente disponga dell'autorizzazione

Assicurarsi che l'account utente che si intende usare abbia l'autorizzazione per registrare l'agente.

L'utente è proprietario dell'organizzazione di Azure DevOps o TFS o amministratore di Azure DevOps Server? Fermati qui, hai l'autorizzazione.

Altrimenti:

  1. Aprire un browser e passare alla scheda Pool di agenti per l'organizzazione di Azure Pipelines o il server Azure DevOps o TFS:

    1. Accedere all'organizzazione (https://dev.azure.com/{yourorganization}).

    2. Scegliere Azure DevOps, Impostazioni organizzazione.

      Scegliere Impostazioni organizzazione.

    3. Scegliere Pool di agenti.

      Scegliere la scheda Pool di agenti.

    1. Accedere alla raccolta di progetti (http://your-server/DefaultCollection).

    2. Scegliere Azure DevOps, Impostazioni raccolta.

      Scegliere Impostazioni raccolta.

    3. Scegliere Pool di agenti.

      Scegliere Pool di agenti.

    1. Scegliere Azure DevOps, Impostazioni raccolta.

      Impostazioni raccolta, 2019.

    2. Scegliere Pool di agenti.

      Scegliere Pool di agenti, 2019.

  2. Selezionare il pool sul lato destro della pagina e quindi fare clic su Sicurezza.

  3. Se l'account utente che si intende usare non viene visualizzato, ottenere un amministratore per aggiungerlo. L'amministratore può essere un amministratore del pool di agenti, un proprietario dell'organizzazione di Azure DevOps o un amministratore di TFS o azure DevOps Server.

    Se si tratta di un agente del gruppo di distribuzione, l'amministratore può essere un amministratore del gruppo di distribuzione, un proprietario dell'organizzazione di Azure DevOps o un amministratore di TFS o Azure DevOps Server.

    È possibile aggiungere un utente al ruolo di amministratore del gruppo di distribuzione nella scheda Sicurezza della pagina Gruppi di distribuzione in Azure Pipelines.

Nota

Se viene visualizzato un messaggio simile al seguente: Non è stato possibile aggiungere l'identità. Provare un'identità diversa. Probabilmente sono stati eseguiti i passaggi precedenti per un proprietario dell'organizzazione o tfs o amministratore di Azure DevOps Server. Non hai bisogno di fare niente; si dispone già dell'autorizzazione per amministrare la coda dell'agente.

Scaricare e configurare l'agente

Azure Pipelines

  1. Accedere al computer usando l'account per cui sono state preparate le autorizzazioni, come illustrato in precedenza.

  2. Nel Web browser accedere ad Azure Pipelines e passare alla scheda Pool di agenti:

    1. Accedere all'organizzazione (https://dev.azure.com/{yourorganization}).

    2. Scegliere Azure DevOps, Impostazioni organizzazione.

      Scegliere Impostazioni organizzazione.

    3. Scegliere Pool di agenti.

      Scegliere la scheda Pool di agenti.

    1. Accedere alla raccolta di progetti (http://your-server/DefaultCollection).

    2. Scegliere Azure DevOps, Impostazioni raccolta.

      Scegliere Impostazioni raccolta.

    3. Scegliere Pool di agenti.

      Scegliere Pool di agenti.

    1. Scegliere Azure DevOps, Impostazioni raccolta.

      Impostazioni raccolta, 2019.

    2. Scegliere Pool di agenti.

      Scegliere Pool di agenti, 2019.

  3. Selezionare il pool predefinito, selezionare la scheda Agenti e scegliere Nuovo agente.

  4. Nella finestra di dialogo Recupera l'agente fare clic su Linux.

  5. Nel riquadro sinistro selezionare il sapore specifico. Sono disponibili x64 o ARM per la maggior parte delle distribuzioni Linux.

  6. Nel riquadro destro fare clic sul pulsante Scarica .

  7. Seguire le istruzioni nella pagina.

  8. Decomprimere l'agente nella directory desiderata. cd in tale directory ed eseguire ./config.sh.

Azure DevOps Server 2019 e Azure DevOps Server 2020

  1. Accedere al computer usando l'account per cui sono state preparate le autorizzazioni, come illustrato in precedenza.

  2. Nel Web browser accedere ad Azure DevOps Server 2019 e passare alla scheda Pool di agenti:

    1. Accedere all'organizzazione (https://dev.azure.com/{yourorganization}).

    2. Scegliere Azure DevOps, Impostazioni organizzazione.

      Scegliere Impostazioni organizzazione.

    3. Scegliere Pool di agenti.

      Scegliere la scheda Pool di agenti.

    1. Accedere alla raccolta di progetti (http://your-server/DefaultCollection).

    2. Scegliere Azure DevOps, Impostazioni raccolta.

      Scegliere Impostazioni raccolta.

    3. Scegliere Pool di agenti.

      Scegliere Pool di agenti.

    1. Scegliere Azure DevOps, Impostazioni raccolta.

      Impostazioni raccolta, 2019.

    2. Scegliere Pool di agenti.

      Scegliere Pool di agenti, 2019.

  3. Fare clic su Scarica agente.

  4. Nella finestra di dialogo Recupera agente fare clic su Linux.

  5. Nel riquadro sinistro selezionare il sapore specifico. Sono disponibili x64 o ARM per la maggior parte delle distribuzioni Linux.

  6. Nel riquadro destro fare clic sul pulsante Scarica .

  7. Seguire le istruzioni nella pagina.

  8. Decomprimere l'agente nella directory desiderata. cd in tale directory ed eseguire ./config.sh.

URL server

Azure Pipelines: https://dev.azure.com/{your-organization}

Azure DevOps Server 2019: https://{your_server}/DefaultCollection

Tipo di autenticazione

Azure Pipelines

Scegliere PAT e quindi incollare il token PAT creato nella finestra del prompt dei comandi.

Nota

Quando si usa PAT come metodo di autenticazione, il token PAT viene usato solo per la configurazione iniziale dell'agente. Per altre informazioni, vedere Comunicazione con Azure Pipelines o TFS.

TFS o Azure DevOps Server

Importante

Assicurarsi che il server sia configurato per supportare il metodo di autenticazione da usare.

Quando si configura l'agente per la connessione a TFS, sono disponibili le opzioni seguenti:

  • Connessione alternativa a TFS o Azure DevOps Server usando l'autenticazione di base. Dopo aver selezionato Alternativo, verranno richieste le credenziali.

  • Integrazione non supportata in macOS o Linux.

  • Negoziare (impostazione predefinita) Connessione a TFS o Azure DevOps Server come utente diverso dall'utente connesso tramite uno schema autenticazione di Windows, ad esempio NTLM o Kerberos. Dopo aver selezionato Negozia, verranno richieste le credenziali.

  • PAT supportato solo in Azure Pipelines e TFS 2017 e versioni successive. Dopo aver scelto PAT, incollare il token PAT creato nella finestra del prompt dei comandi. Usare un token di accesso personale (PAT) se l'istanza di Azure DevOps Server o TFS e il computer agente non si trovano in un dominio attendibile. L'autenticazione PAT viene gestita dall'istanza di Azure DevOps Server o TFS anziché dal controller di dominio.

Nota

Quando si usa PAT come metodo di autenticazione, il token PAT viene usato solo per la configurazione iniziale dell'agente in Azure DevOps Server e per le versioni più recenti di TFS. Per altre informazioni, vedere Comunicazione con Azure Pipelines o TFS.

Eseguire in modo interattivo

Per indicazioni su se eseguire l'agente in modalità interattiva o come servizio, vedere Agents: Interactive vs. Service.

Per eseguire l'agente in modo interattivo:

  1. Se l'agente è stato eseguito come servizio, disinstallare il servizio.

  2. Eseguire l'agente.

    ./run.sh
    

Per riavviare l'agente, premere CTRL+C e quindi eseguire run.sh per riavviarlo.

Per usare l'agente, eseguire un processo usando il pool dell'agente. Se non è stato scelto un pool diverso, l'agente si troverà nel pool predefinito .

Eseguire una sola volta

Per gli agenti configurati per l'esecuzione interattiva, è possibile scegliere di fare in modo che l'agente accetti un solo processo. Per l'esecuzione in questa configurazione:

./run.sh --once

Gli agenti in questa modalità accetteranno un solo processo e quindi si avviano normalmente (utile per l'esecuzione in Docker in un servizio come Istanze di Azure Container).

Esecuzione come servizio di sistema

Se l'agente è in esecuzione in questi sistemi operativi, è possibile eseguire l'agente come systemd servizio:

  • Ubuntu 16 LTS o versione successiva
  • Red Hat 7.1 o versione successiva

Viene fornito uno script di esempio ./svc.sh per l'esecuzione e la gestione dell'agente come systemd servizio. Questo script verrà generato dopo la configurazione dell'agente. È consigliabile esaminare e, se necessario, aggiornare lo script prima di eseguirlo.

Alcune avvertenze importanti:

  • Se si esegue l'agente come servizio, non è possibile eseguire il servizio agente come root utente.
  • Gli utenti che eseguono edizione Standard Linux hanno segnalato difficoltà con lo script fornitosvc.sh. Fare riferimento a questo problema dell'agente come punto di partenza. edizione Standard Linux non è una configurazione ufficialmente supportata.

Nota

Se si dispone di una distribuzione diversa o se si preferisce altri approcci, è possibile usare qualsiasi tipo di meccanismo di servizio preferito. Vedere File di servizio.

Comandi

Passare alla directory dell'agente

Ad esempio, se è stato installato nella myagent sottocartella della home directory:

cd ~/myagent$

Installare

Comando:

sudo ./svc.sh install [username]

Questo comando crea un file del servizio che punta a ./runsvc.sh. Questo script configura l'ambiente (altri dettagli di seguito) e avvia l'host degli agenti. Se username il parametro non viene specificato, il nome utente viene tratto dalla variabile di ambiente $SUDO_U edizione Standard R impostata dal comando sudo. Questa variabile è sempre uguale al nome dell'utente che ha richiamato il sudo comando.

Inizio

sudo ./svc.sh start

Status

sudo ./svc.sh status

Arresta

sudo ./svc.sh stop

Disinstalla

È consigliabile arrestarsi prima della disinstallazione.

sudo ./svc.sh uninstall

Aggiornamento delle variabili di ambiente

Quando si configura il servizio, viene creato uno snapshot di alcune variabili di ambiente utili per l'utente di accesso corrente, ad esempio PATH, LANG, JAVA_HOME, ANT_HOME e MYSQL_PATH. Se è necessario aggiornare le variabili, ad esempio dopo l'installazione di un nuovo software:

./env.sh
sudo ./svc.sh stop
sudo ./svc.sh start

Lo snapshot delle variabili di ambiente viene archiviato nel file (PATH è archiviato in .env ) nella .pathdirectory radice dell'agente, è anche possibile modificare questi file direttamente per applicare le modifiche delle variabili di ambiente.

Eseguire le istruzioni prima dell'avvio del servizio

È anche possibile eseguire istruzioni e comandi personalizzati da eseguire all'avvio del servizio. Ad esempio, è possibile configurare l'ambiente o chiamare script.

  1. Modificare runsvc.sh.

  2. Sostituire la riga seguente con le istruzioni:

    # insert anything to setup env when running as a service
    

File di servizio

Quando si installa il servizio, vengono inseriti alcuni file di servizio.

file del servizio systemd

Viene creato un file del servizio di sistema:

/etc/systemd/system/vsts.agent.{tfs-name}.{agent-name}.service

Ad esempio, è stato configurato un agente (vedere sopra) con il nome our-linux-agent. Il file del servizio sarà:

  • Azure Pipelines: il nome dell'organizzazione. Ad esempio, se ci si connette a https://dev.azure.com/fabrikam, il nome del servizio sarà /etc/systemd/system/vsts.agent.fabrikam.our-linux-agent.service

  • TFS o Azure DevOps Server: il nome del server locale. Ad esempio, se ci si connette a http://our-server:8080/tfs, il nome del servizio sarà /etc/systemd/system/vsts.agent.our-server.our-linux-agent.service

sudo ./svc.sh install genera questo file da questo modello: ./bin/vsts.agent.service.template

File con estensione service

sudo ./svc.sh start trova il servizio leggendo il .service file, che contiene il nome del file del servizio systemd descritto in precedenza.

Meccanismi di servizio alternativi

Lo script è un modo pratico per eseguire e gestire l'agente ./svc.sh come servizio di sistema. Tuttavia, è possibile usare qualsiasi tipo di meccanismo di servizio preferito, ad esempio initd o upstart.

È possibile usare il modello descritto in precedenza per facilitare la generazione di altri tipi di file di servizio.

Usare un cgroup per evitare errori dell'agente

È importante evitare situazioni in cui l'agente non riesce o diventa inutilizzabile perché in caso contrario l'agente non può trasmettere i log della pipeline o segnalare lo stato della pipeline al server. È possibile ridurre il rischio di questo tipo di problema causato da un utilizzo elevato di memoria usando cgroup e un valore inferiore oom_score_adj. Al termine, Linux recupera la memoria di sistema dai processi del processo della pipeline prima di recuperare memoria dal processo dell'agente. Informazioni su come configurare cgroup e punteggio OOM.

Sostituire un agente

Per sostituire un agente, seguire la procedura Scarica e configurare di nuovo l'agente .

Quando si configura un agente con lo stesso nome di un agente già esistente, viene chiesto se si vuole sostituire l'agente esistente. Se si risponde Y, assicurarsi di rimuovere l'agente (vedere di seguito) che si sta sostituendo. In caso contrario, dopo alcuni minuti di conflitti, uno degli agenti verrà arrestato.

Rimuovere e riconfigurare un agente

Per rimuovere l'agente:

  1. Arrestare e disinstallare il servizio come illustrato in precedenza.

  2. Rimuovere l'agente.

    ./config.sh remove
    
  3. Immetti le tue credenziali.

Dopo aver rimosso l'agente, è possibile configurarlo di nuovo.

Configurazione automatica

L'agente può essere configurato da uno script senza alcun intervento umano. È necessario passare --unattended e le risposte a tutte le domande.

Per configurare un agente, deve conoscere l'URL dell'organizzazione o la raccolta e le credenziali di un utente autorizzato a configurare gli agenti. Tutte le altre risposte sono facoltative. È possibile specificare qualsiasi parametro della riga di comando usando invece una variabile di ambiente: inserire il nome in lettere maiuscole e anteporre VSTS_AGENT_INPUT_. Ad esempio, VSTS_AGENT_INPUT_PASSWORD anziché specificare --password.

Opzioni obbligatorie

  • --unattended - l'installazione dell'agente non richiederà informazioni e tutte le impostazioni devono essere specificate nella riga di comando
  • --url <url> - URL del server. Ad esempio: https://dev.azure.com/myorganization o http://my-azure-devops-server:8080/tfs
  • --auth <type> - tipo di autenticazione. I valori validi sono:
    • pat (Token di accesso personale): pat è l'unico schema che funziona con Azure DevOps Services.
    • negotiate (Kerberos o NTLM)
    • alt (Autenticazione di base)
    • integrated (Credenziali predefinite di Windows)

Opzioni di autenticazione

  • Se si sceglie --auth pat:
    • --token <token> - specifica il token di accesso personale
    • PAT è l'unico schema che funziona con Azure DevOps Services.
  • Se si sceglie --auth negotiate o --auth alt:
    • --userName <userName> - specifica un nome utente di Windows nel formato domain\userName o userName@domain.com
    • --password <password> - specifica una password

Nomi di pool e agenti

  • --pool <pool> - nome del pool per l'agente da aggiungere
  • --agent <agent> - nome agente
  • --replace - sostituire l'agente in un pool. Se un altro agente è in ascolto con lo stesso nome, inizierà a non riuscire con un conflitto

Configurazione dell'agente

  • --work <workDirectory> : directory di lavoro in cui vengono archiviati i dati del processo. Il valore predefinito è _work nella radice della directory dell'agente. La directory di lavoro è di proprietà di un determinato agente e non deve essere condivisa tra più agenti.
  • --acceptTeeEula - accettare il Contratto di licenza per l'utente finale di Team Explorer Ovunque (solo macOS e Linux)
  • --disableloguploads - non trasmettere o inviare l'output del log della console al server. Al termine del processo, è invece possibile recuperarli dal file system dell'host dell'agente.

Avvio solo Windows

  • --runAsService : configurare l'agente per l'esecuzione come servizio Windows (richiede l'autorizzazione di amministratore)
  • --runAsAutoLogon - Configurare l'accesso automatico ed eseguire l'agente all'avvio (richiede l'autorizzazione di amministratore)
  • --windowsLogonAccount <account> - utilizzato con --runAsService o --runAsAutoLogon per specificare il nome utente di Windows nel formato domain\userName o userName@domain.com
  • --windowsLogonPassword <password>- usato con --runAsService o --runAsAutoLogon per specificare la password di accesso di Windows (non necessaria per gli account del servizio gestito del gruppo e gli account predefiniti di Windows, ad esempio "NT AUTHORITY\NETWORK edizione Standard RVICE")
  • --enableservicesidtypeunrestricted - usato con --runAsService per configurare l'agente con il tipo SID del servizio come SERVICE_SID_TYPE_UNRESTRICTED (richiede l'autorizzazione di amministratore)
  • --overwriteAutoLogon - usato con --runAsAutoLogon per sovrascrivere l'accesso automatico esistente nel computer
  • --noRestart - usato con --runAsAutoLogon per arrestare il riavvio dell'host al termine della configurazione dell'agente

Risoluzione dei problemi di configurazione dell'agente con l'opzione runAsAutoLogon

La configurazione dell'agente con l'opzione runAsAutoLogon esegue l'agente ogni volta dopo il riavvio del computer. Eseguire i passaggi successivi se l'agente non viene eseguito dopo il riavvio del computer.

Se l'agente è già stato configurato nel computer

Prima di riconfigurare l'agente, è necessario rimuovere la configurazione dell'agente precedente, quindi provare a eseguire questo comando dalla cartella dell'agente:

.\config.cmd remove --auth 'PAT' --token '<token>'

Controllare se l'agente è stato rimosso dal pool di agenti dopo l'esecuzione del comando:

<Azure DevOps organization> / <Project> / Settings / Agent pools / <Agent Pool> / Agents

Rimuovere manualmente l'agente dal pool di agenti se non è stato rimosso eseguendo il comando .

Provare quindi a riconfigurare l'agente eseguendo questo comando dalla cartella dell'agente:

.\config.cmd --unattended --agent '<agent-name>' --pool '<agent-pool-name>' --url '<azure-dev-ops-organization-url>' --auth 'PAT' --token '<token>' --runAsAutoLogon --windowsLogonAccount '<domain\user-name>' --windowsLogonPassword '<windows-password>'

Specificare il nome dell'agente (qualsiasi nome univoco specifico) e verificare se questo agente è presente nel pool di agenti dopo la riconfigurazione.

Sarà molto meglio decomprimere un archivio agente (che può essere scaricato qui) ed eseguire questo comando dalla nuova cartella dell'agente decompresso.

Controllare se la chiave del Registro di sistema di Windows è registrata e salvata correttamente

Eseguire il whoami /user comando per ottenere .<sid> Aprire Registry Editor e seguire il percorso:

Computer\HKEY_USERS\<sid>\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Controllare se è presente la VSTSAgent chiave. Eliminare questa chiave, se esistente, quindi chiudere Registry Editor e configurare l'agente eseguendo il .\config.cmd comando (senza argomenti) dalla cartella dell'agente. Prima di rispondere alla domanda Enter Restart the machine at a later time?, aprire Registry Editor di nuovo e verificare se la VSTSAgent chiave è apparsa. Premere Enter per rispondere alla domanda e verificare se il VSTSAgent tasto rimane sul posto dopo il riavvio del computer.

Controllare se le chiavi del Registro di sistema di Windows funzionano correttamente nel computer

Creare un autorun.cmd file contenente la riga seguente: echo "Hello from AutoRun!". Aprire Registry Editor e creare nel percorso precedente una nuova coppia chiave-valore con la chiave AutoRun e il valore

C:\windows\system32\cmd.exe /D /S /C start "AutoRun" "D:\path\to\autorun.cmd"

Riavviare il computer. Si verifica un problema con le chiavi del Registro di sistema di Windows se non viene visualizzata una finestra della console con il Hello from AutoRun! messaggio .

Solo gruppo di distribuzione

  • --deploymentGroup : configurare l'agente come agente del gruppo di distribuzione
  • --deploymentGroupName <name> - usato con --deploymentGroup per specificare il gruppo di distribuzione per l'agente da aggiungere
  • --projectName <name> - usato con --deploymentGroup per impostare il nome del progetto
  • --addDeploymentGroupTags - usato con --deploymentGroup per indicare che devono essere aggiunti i tag del gruppo di distribuzione
  • --deploymentGroupTags <tags> - usato con --addDeploymentGroupTags per specificare l'elenco delimitato da virgole di tag per l'agente del gruppo di distribuzione, ad esempio "Web, db"

Solo ambienti

  • --addvirtualmachineresourcetags - usato per indicare che i tag delle risorse dell'ambiente devono essere aggiunti
  • --virtualmachineresourcetags <tags> - usato con --addvirtualmachineresourcetags per specificare l'elenco delimitato da virgole di tag per l'agente risorse dell'ambiente, ad esempio "Web, db"

./config.sh --help elenca sempre le risposte obbligatorie e facoltative più recenti.

Diagnostica

Se si verificano problemi con l'agente self-hosted, è possibile provare a eseguire la diagnostica. Dopo aver configurato l'agente:

./run.sh --diagnostics

Questa operazione verrà eseguita tramite una suite di diagnostica che può aiutare a risolvere il problema. La funzionalità di diagnostica è disponibile a partire dalla versione dell'agente 2.165.0.

Guida su altre opzioni

Per altre informazioni sulle altre opzioni:

./config.sh --help

La Guida fornisce informazioni sulle alternative di autenticazione e sulla configurazione automatica.

Capabilities

Le funzionalità dell'agente vengono catalogate e annunciate nel pool in modo che solo le compilazioni e le versioni che può gestire vengano assegnate. Vedere Funzionalità dell'agente di compilazione e rilascio.

In molti casi, dopo aver distribuito un agente, sarà necessario installare software o utilità. In genere è consigliabile installare sugli agenti qualsiasi software e strumenti usati nel computer di sviluppo.

Ad esempio, se la compilazione include l'attività npm, la compilazione non verrà eseguita a meno che non sia presente un agente di compilazione nel pool in cui è installato npm.

Importante

Le funzionalità includono tutte le variabili di ambiente e i valori impostati durante l'esecuzione dell'agente. Se uno di questi valori cambia durante l'esecuzione dell'agente, è necessario riavviare l'agente per recuperare i nuovi valori. Dopo aver installato il nuovo software in un agente, è necessario riavviare l'agente per visualizzare la nuova funzionalità nel pool, in modo che la compilazione possa essere eseguita.

Se si desidera escludere le variabili di ambiente come funzionalità, è possibile designarle impostando una variabile VSO_AGENT_IGNORE di ambiente con un elenco delimitato da virgole di variabili da ignorare.

Domande frequenti

Ricerca per categorie assicurarsi di avere la versione più recente dell'agente?

  1. Passare alla scheda Pool di agenti:

    1. Accedere all'organizzazione (https://dev.azure.com/{yourorganization}).

    2. Scegliere Azure DevOps, Impostazioni organizzazione.

      Scegliere Impostazioni organizzazione.

    3. Scegliere Pool di agenti.

      Scegliere la scheda Pool di agenti.

    1. Accedere alla raccolta di progetti (http://your-server/DefaultCollection).

    2. Scegliere Azure DevOps, Impostazioni raccolta.

      Scegliere Impostazioni raccolta.

    3. Scegliere Pool di agenti.

      Scegliere Pool di agenti.

    1. Scegliere Azure DevOps, Impostazioni raccolta.

      Impostazioni raccolta, 2019.

    2. Scegliere Pool di agenti.

      Scegliere Pool di agenti, 2019.

  2. Fare clic sul pool che contiene l'agente.

  3. Assicurarsi che l'agente sia abilitato.

  4. Passare alla scheda funzionalità:

    1. Nella scheda Pool di agenti selezionare il pool di agenti desiderato.

      In Pool di agenti selezionare il pool di agenti desiderato.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Selezionare Agenti e scegliere l'agente.

    3. Scegliere la scheda Funzionalità .

      Scegliere la scheda Funzionalità.

      Nota

      Gli agenti ospitati da Microsoft non visualizzano le funzionalità di sistema. Per un elenco del software installato in agenti ospitati da Microsoft, vedere Usare un agente ospitato da Microsoft.

    1. Nella scheda Pool di agenti selezionare il pool desiderato.

      Selezionare il pool desiderato.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Selezionare Agenti e scegliere l'agente desiderato.

    3. Scegliere la scheda Funzionalità .

      Scheda Funzionalità agente.

    1. Nella scheda Pool di agenti selezionare il pool desiderato.

      Selezionare la scheda desiderata, 2019.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Scegliere l'agente desiderato, 2019.

    3. Scegliere la scheda Funzionalità .

      Scegliere la scheda Funzionalità, 2019.

  5. Cercare la Agent.Version funzionalità. È possibile controllare questo valore rispetto alla versione più recente dell'agente pubblicato. Vedere Agente di Azure Pipelines e controllare la pagina relativa al numero di versione più alto elencato.

  6. Ogni agente si aggiorna automaticamente quando esegue un'attività che richiede una versione più recente dell'agente. Per aggiornare manualmente alcuni agenti, fare clic con il pulsante destro del mouse sul pool e selezionare Aggiorna tutti gli agenti.

È possibile aggiornare gli agenti che fanno parte di un pool di Azure DevOps Server?

Sì. A partire da Azure DevOps Server 2019, è possibile configurare il server per cercare i file del pacchetto dell'agente in un disco locale. Questa configurazione eseguirà l'override della versione predefinita fornito con il server al momento del rilascio. Questo scenario si applica anche quando il server non ha accesso a Internet.

  1. Da un computer con accesso a Internet scaricare la versione più recente dei file del pacchetto dell'agente (in .zip o .tar.gz modulo) dalla pagina Azure Pipelines Agent GitHub Releases (Versioni gitHub dell'agente di Azure Pipelines).

  2. Trasferire i file del pacchetto scaricati in ogni livello applicazione del server Azure DevOps usando un metodo di propria scelta, ad esempio unità USB, trasferimento di rete e così via. Inserire i file dell'agente nella cartella seguente:

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux: usr/share/Microsoft/Azure DevOps/Agents
  • macOS: usr/share/Microsoft/Azure DevOps/Agents

Creare la cartella Agents se non è presente.

  1. Accesso completato. Il server Azure DevOps userà ora i file locali ogni volta che gli agenti vengono aggiornati. Ogni agente si aggiorna automaticamente quando esegue un'attività che richiede una versione più recente dell'agente. Tuttavia, se si desidera aggiornare manualmente alcuni agenti, fare clic con il pulsante destro del mouse sul pool e quindi scegliere Aggiorna tutti gli agenti.

Ricerca per categorie assicurarsi di avere la versione più recente dell'agente v2?

  1. Passare alla scheda Pool di agenti:

    1. Accedere all'organizzazione (https://dev.azure.com/{yourorganization}).

    2. Scegliere Azure DevOps, Impostazioni organizzazione.

      Scegliere Impostazioni organizzazione.

    3. Scegliere Pool di agenti.

      Scegliere la scheda Pool di agenti.

    1. Accedere alla raccolta di progetti (http://your-server/DefaultCollection).

    2. Scegliere Azure DevOps, Impostazioni raccolta.

      Scegliere Impostazioni raccolta.

    3. Scegliere Pool di agenti.

      Scegliere Pool di agenti.

    1. Scegliere Azure DevOps, Impostazioni raccolta.

      Impostazioni raccolta, 2019.

    2. Scegliere Pool di agenti.

      Scegliere Pool di agenti, 2019.

  2. Fare clic sul pool che contiene l'agente.

  3. Assicurarsi che l'agente sia abilitato.

  4. Passare alla scheda funzionalità:

    1. Nella scheda Pool di agenti selezionare il pool di agenti desiderato.

      In Pool di agenti selezionare il pool di agenti desiderato.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Selezionare Agenti e scegliere l'agente.

    3. Scegliere la scheda Funzionalità .

      Scegliere la scheda Funzionalità.

      Nota

      Gli agenti ospitati da Microsoft non visualizzano le funzionalità di sistema. Per un elenco del software installato in agenti ospitati da Microsoft, vedere Usare un agente ospitato da Microsoft.

    1. Nella scheda Pool di agenti selezionare il pool desiderato.

      Selezionare il pool desiderato.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Selezionare Agenti e scegliere l'agente desiderato.

    3. Scegliere la scheda Funzionalità .

      Scheda Funzionalità agente.

    1. Nella scheda Pool di agenti selezionare il pool desiderato.

      Selezionare la scheda desiderata, 2019.

    2. Selezionare Agenti e scegliere l'agente desiderato.

      Scegliere l'agente desiderato, 2019.

    3. Scegliere la scheda Funzionalità .

      Scegliere la scheda Funzionalità, 2019.

  5. Cercare la Agent.Version funzionalità. È possibile controllare questo valore rispetto alla versione più recente dell'agente pubblicato. Vedere Agente di Azure Pipelines e controllare la pagina relativa al numero di versione più alto elencato.

  6. Ogni agente si aggiorna automaticamente quando esegue un'attività che richiede una versione più recente dell'agente. Per aggiornare manualmente alcuni agenti, fare clic con il pulsante destro del mouse sul pool e selezionare Aggiorna tutti gli agenti.

È possibile aggiornare gli agenti v2 che fanno parte di un pool di Azure DevOps Server?

Sì. A partire da Azure DevOps Server 2019, è possibile configurare il server per cercare i file del pacchetto dell'agente in un disco locale. Questa configurazione eseguirà l'override della versione predefinita fornito con il server al momento del rilascio. Questo scenario si applica anche quando il server non ha accesso a Internet.

  1. Da un computer con accesso a Internet scaricare la versione più recente dei file del pacchetto dell'agente (in .zip o .tar.gz modulo) dalla pagina Azure Pipelines Agent GitHub Releases (Versioni gitHub dell'agente di Azure Pipelines).

  2. Trasferire i file del pacchetto scaricati in ogni livello applicazione del server Azure DevOps usando un metodo di propria scelta, ad esempio unità USB, trasferimento di rete e così via. Posizionare i file dell'agente nella %ProgramData%\Microsoft\Azure DevOps\Agents cartella . Creare la cartella Agents se non è presente.

  3. Accesso completato. Il server Azure DevOps userà ora i file locali ogni volta che gli agenti vengono aggiornati. Ogni agente si aggiorna automaticamente quando esegue un'attività che richiede una versione più recente dell'agente. Tuttavia, se si desidera aggiornare manualmente alcuni agenti, fare clic con il pulsante destro del mouse sul pool e quindi scegliere Aggiorna tutti gli agenti.

Perché sudo è necessario per eseguire i comandi del servizio?

./svc.sh usa systemctl, che richiede sudo.

Codice sorgente: systemd.svc.sh.template in GitHub

È in esecuzione un firewall e il codice è in Azure Repos. Con quali URL deve comunicare l'agente?

Se si esegue un agente in una rete sicura dietro un firewall, assicurarsi che l'agente possa avviare la comunicazione con gli URL e gli indirizzi IP seguenti.

URL del dominio Descrizione
https://{organization_name}.pkgs.visualstudio.com API di creazione pacchetti di Azure DevOps per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://{organization_name}.visualstudio.com Per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://{organization_name}.vsblob.visualstudio.com Telemetria di Azure DevOps per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://{organization_name}.vsrm.visualstudio.com Release Management Services per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://{organization_name}.vssps.visualstudio.com Azure DevOps Platform Services per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://{organization_name}.vstmr.visualstudio.com Servizi di gestione dei test di Azure DevOps per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://*.blob.core.windows.net Azure Artifacts
https://*.dev.azure.com Per le organizzazioni che usano il dev.azure.com dominio
https://*.vsassets.io Azure Artifacts tramite rete CDN
https://*.vsblob.visualstudio.com Telemetria di Azure DevOps per le organizzazioni che usano il dev.azure.com dominio
https://*.vssps.visualstudio.com Azure DevOps Platform Services per le organizzazioni che usano il dev.azure.com dominio
https://*.vstmr.visualstudio.com Servizi di gestione dei test di Azure DevOps per le organizzazioni che usano il dev.azure.com dominio
https://app.vssps.visualstudio.com Per le organizzazioni che usano il {organization_name}.visualstudio.com dominio
https://dev.azure.com Per le organizzazioni che usano il dev.azure.com dominio
https://login.microsoftonline.com Accesso a Microsoft Entra
https://management.core.windows.net API di Gestione di Azure
https://vstsagentpackage.azureedge.net Pacchetto dell'agente

Per assicurarsi che l'organizzazione funzioni con qualsiasi firewall o restrizioni IP esistente, assicurarsi che e *dev.azure.com siano aperti e aggiornati gli INDIRIZZI IP consentiti in modo da dev.azure.com includere gli indirizzi IP seguenti, in base alla versione IP. Se sono attualmente consentiti elencare gli 13.107.6.183 indirizzi IP e 13.107.9.183 , lasciarli sul posto, in quanto non è necessario rimuoverli.

Intervalli IPv4

  • 13.107.6.0/24
  • 13.107.9.0/24
  • 13.107.42.0/24
  • 13.107.43.0/24

Intervalli IPv6

  • 2620:1ec:4::/48
  • 2620:1ec:a92::/48
  • 2620:1ec:21::/48
  • 2620:1ec:22::/48

Nota

Per altre informazioni sugli indirizzi consentiti, vedere Elenchi di indirizzi consentiti e connessioni di rete.

Ricerca per categorie eseguire l'agente con un certificato autofirmato?

Eseguire l'agente con un certificato autofirmato

Ricerca per categorie eseguire l'agente dietro un proxy Web?

Eseguire l'agente dietro un proxy Web

Ricerca per categorie riavviare l'agente

Se si esegue l'agente in modo interattivo, vedere le istruzioni di riavvio in Esegui in modo interattivo. Se si esegue l'agente come servizio di sistema, seguire la procedura per arrestare e quindi avviare l'agente.

Ricerca per categorie configurare l'agente per ignorare un proxy Web e connettersi ad Azure Pipelines?

Se si vuole che l'agente ignori il proxy e si connetta direttamente ad Azure Pipelines, è necessario configurare il proxy Web per consentire all'agente di accedere agli URL seguenti.

Per le organizzazioni che usano il *.visualstudio.com dominio:

https://login.microsoftonline.com
https://app.vssps.visualstudio.com 
https://{organization_name}.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com
https://{organization_name}.pkgs.visualstudio.com
https://{organization_name}.vssps.visualstudio.com

Per le organizzazioni che usano il dev.azure.com dominio:

https://dev.azure.com
https://*.dev.azure.com
https://login.microsoftonline.com
https://management.core.windows.net
https://vstsagentpackage.azureedge.net
https://vssps.dev.azure.com

Per assicurarsi che l'organizzazione funzioni con qualsiasi firewall o restrizioni IP esistente, assicurarsi che e *dev.azure.com siano aperti e aggiornati gli INDIRIZZI IP consentiti in modo da dev.azure.com includere gli indirizzi IP seguenti, in base alla versione IP. Se sono attualmente consentiti elencare gli 13.107.6.183 indirizzi IP e 13.107.9.183 , lasciarli sul posto, in quanto non è necessario rimuoverli.

Intervalli IPv4

  • 13.107.6.0/24
  • 13.107.9.0/24
  • 13.107.42.0/24
  • 13.107.43.0/24

Intervalli IPv6

  • 2620:1ec:4::/48
  • 2620:1ec:a92::/48
  • 2620:1ec:21::/48
  • 2620:1ec:22::/48

Nota

Questa procedura consente all'agente di ignorare un proxy Web. La pipeline di compilazione e gli script devono comunque gestire il bypass del proxy Web per ogni attività e strumento eseguito nella compilazione.

Ad esempio, se si usa un'attività NuGet, è necessario configurare il proxy Web per supportare il bypass dell'URL per il server che ospita il feed NuGet in uso.

Si usano TFS e gli URL nelle sezioni precedenti non funzionano per me. Come è possibile ricevere supporto?

Impostazioni e sicurezza del sito Web

Si usano TFS in locale e alcune di queste funzionalità non vengono visualizzate. Perché no?

Alcune di queste funzionalità sono disponibili solo in Azure Pipelines e non sono ancora disponibili in locale. Alcune funzionalità sono disponibili in locale se è stato eseguito l'aggiornamento alla versione più recente di TFS.