Condividi tramite


Tipi di attività e utilizzo

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

I processi di Azure Pipelines sono costituiti da passaggi, che possono essere attività o script. Un'attività è uno script o una routine preconfezionata che esegue un'azione o usa un set di input per definire l'automazione della pipeline. Questo articolo descrive le attività della pipeline e come usarle. Per informazioni sullo schema, vedere la definizione steps.task .

Azure Pipelines include molte attività predefinite che consentono scenari di compilazione e distribuzione fondamentali. Per un elenco delle attività predefinite di Azure Pipelines disponibili, vedere le informazioni di riferimento sulle attività di Azure Pipelines. È anche possibile installare attività da Visual Studio Marketplace o creare attività personalizzate.

Per impostazione predefinita, tutti i passaggi di un processo vengono eseguiti in sequenza nello stesso contesto, sia nell'host che in un contenitore di processi. Facoltativamente, è possibile usare le destinazioni dei passaggi per controllare il contesto per le singole attività. Per eseguire alcune attività in parallelo su più agenti o senza usare un agente, vedere Specificare i processi nella pipeline.

Gestione delle attività

Le attività sono disponibili e installate a livello di organizzazione di Azure DevOps. È possibile usare solo le attività e le versioni delle attività esistenti per l'organizzazione.

È possibile disabilitare le attività predefinite, le attività del Marketplace o entrambe in Impostazioni dell'organizzazione>Pipeline>Impostazioni sotto Restrizioni delle attività. Se si disabilitano sia le attività predefinite che di Marketplace, sono disponibili solo le attività installate usando l'interfaccia della riga di comando di Node per Azure DevOps .

La disabilitazione delle attività del Marketplace consente di migliorare la sicurezza delle pipeline. Nella maggior parte dei casi, non è consigliabile disabilitare le attività predefinite. Per altre informazioni, vedere Controllare le attività disponibili.

Attività personalizzate

Visual Studio Marketplace offre molte estensioni che è possibile installare per estendere il catalogo attività di Azure Pipelines. È anche possibile creare attività personalizzate. Per ulteriori informazioni, vedere Aggiungere un'estensione di attività personalizzata per pipeline.

Nelle pipeline YAML si fa riferimento alle attività in base al nome. Se il nome dell'attività personalizzata corrisponde a un nome di attività predefinito, la pipeline usa l'attività predefinita. Per evitare questa situazione, è possibile fare riferimento all'attività personalizzata usando il GUID di attività univoco assegnato al momento della creazione dell'attività. Per altre informazioni, vedere Informazioni sui componenti task.json.

Versioni delle attività

Le attività sono versionate e devi specificare la versione principale delle attività usate nella pipeline. La specifica della versione consente di evitare problemi quando vengono rilasciate nuove versioni di un'attività.

Le pipeline vengono aggiornate automaticamente per usare nuove versioni di attività secondarie, ad esempio da 1.2 a 1.3. Le versioni minori dei task sono in genere retrocompatibili, ma in alcuni scenari è possibile che si verifichino errori imprevedibili quando un task si aggiorna automaticamente.

Se viene rilasciata una nuova versione principale dell'attività, come la versione 2.0, la pipeline continua a utilizzare la versione principale che hai specificato fino a quando non modifichi la pipeline per passare manualmente alla nuova versione principale. I log di compilazione forniscono avvisi quando sono disponibili nuove versioni principali. È possibile usare solo le versioni delle attività che esistono per la tua organizzazione.

In YAML specificare la versione principale usando @ nel nome dell'attività. Ad esempio, per usare la versione 2 dell'attività PublishTestResults , specificare PublishTestResults@2. È possibile indicare quale versione secondaria utilizzare fornendo il numero di versione completo dell'attività dopo @, ad esempio [email protected].

Opzioni attività

Per i passaggi della pipeline task YAML sono disponibili le proprietà seguenti. Per altre informazioni, vedere la definizione steps.task .

Proprietà TIPO Description
task corda Obbligatorio come prima proprietà. Nome dell'attività da eseguire.
inputs corda Input per l'attività, usando coppie nome/valore.
condition corda Condizioni in cui viene eseguita l'attività.
continueOnError boolean Indica se continuare l'esecuzione anche in caso di errore.
displayName corda Nome leggibile per il compito.
enabled boolean Indica se eseguire questa attività quando il processo viene eseguito.
env corda Variabili di cui eseguire il mapping nell'ambiente del processo usando coppie nome/valore.
name corda ID del passaggio.
retryCountOnTaskFailure corda Numero di tentativi se l'attività ha esito negativo.
target corda Ambiente in cui eseguire questa attività.
timeoutInMinutes corda Tempo massimo di esecuzione dell'attività prima dell'annullamento automatico.

Condizioni

Un'attività non può determinare se continuare il processo della pipeline al termine dell'attività, può solo fornire uno stato finale, succeeded ad esempio, o failed. Le attività e i processi downstream possono quindi impostare un condition in base a tale stato per determinare se eseguire.

La proprietà conditions specifica le condizioni in cui viene eseguita questa attività. Per impostazione predefinita, un passaggio viene eseguito se nulla nel suo lavoro è ancora fallito e il passaggio immediatamente precedente è stato completato.

È possibile eseguire l'override o personalizzare queste impostazioni predefinite impostando il passaggio da eseguire anche se o solo se una dipendenza precedente ha esito negativo o ha un altro risultato. È anche possibile definire condizioni personalizzate, costituite da espressioni.

Nota

Le condizioni si applicano a tutte le dipendenze dirette e indirette precedenti con lo stesso pool di agenti. Fasi o processi in pool di agenti diversi vengono eseguiti simultaneamente.

Le condizioni in base allo stato precedente delle dipendenze includono:

  • Operazione completata: viene eseguita solo se tutte le dipendenze precedenti hanno esito positivo. Questo comportamento è l'impostazione predefinita se non viene impostata alcuna condizione in YAML. Per applicare questa condizione, specificare condition: succeeded().
  • Operazione riuscita o non riuscita: eseguire anche se una dipendenza precedente non riesce, a meno che l'esecuzione non venga annullata. Per applicare questa condizione, specificare condition: succeededOrFailed().
  • Sempre: eseguire anche se una dipendenza precedente ha esito negativo, anche se l'esecuzione viene annullata. Per applicare questa condizione, specificare condition: always().
  • Non riuscito: viene eseguito solo quando una dipendenza precedente ha esito negativo. Per applicare questa condizione, specificare condition: failed().

Nell'esempio YAML seguente, PublishTestResults@2 viene eseguito anche se il passaggio precedente è fallito, grazie alla condizione succeededOrFailed.

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'
- task: PublishTestResults@2
  inputs:
    testResultsFiles: "**/TEST-*.xml"
  condition: succeededOrFailed()

Continua in caso di errore

La continueOnError proprietà indica all'attività se continuare l'esecuzione e segnalare l'esito positivo indipendentemente dagli errori. Se impostato su true, questa proprietà indica all'attività di ignorare lo stato failed e continuare l'esecuzione. I passaggi downstream e le attività complementari trattano il risultato dell'attività come success quando prendono le decisioni di esecuzione.

Attivata

Per impostazione predefinita, l'attività viene eseguita ogni volta che viene eseguito il processo. È possibile impostare enabled su false per disabilitare l'attività. Disabilitare temporaneamente l'attività è utile per rimuovere l'attività dal processo a scopo di test o per distribuzioni specifiche.

Numero di tentativi in caso di errore dell'attività

La retryCountOnTaskFailure proprietà specifica il numero di tentativi di ripetizione dell'attività in caso di errore. Il valore predefinito è zero ripetizioni.

  • Il numero massimo di tentativi consentiti è 10.
  • Il tempo di attesa aumenta dopo ogni tentativo non riuscito, seguendo una strategia di backoff esponenziale. Il primo tentativo si verifica dopo 1 secondo, il secondo tentativo dopo 4 secondi e il decimo tentativo dopo 100 secondi.
  • Riprovare l'attività non fornisce idempotenza. Gli effetti collaterali del primo tentativo, ad esempio la creazione parziale di una risorsa esterna, potrebbero causare l'esito negativo dei tentativi.
  • Nessuna informazione del numero dei tentativi viene resa disponibile per l'attività.
  • Il fallimento del compito aggiunge un avviso ai registri delle attività, indicando che è fallito prima di riprovare il compito.
  • Tutti i tentativi vengono visualizzati nell'interfaccia utente come parte dello stesso nodo attività.

Nota

La retryCountOnTaskFailure proprietà richiede la versione dell'agente 2.194.0 o successiva. In Azure DevOps Server 2022, i tentativi per le attività senza agente non sono supportati. Per altre informazioni, vedere Aggiornamento del servizio Azure DevOps 16 novembre 2021 - Riavvii automatici per un'attività e Aggiornamento del servizio Azure DevOps 14 giugno 2025 - Riavvii per le attività del server.

Obiettivo

Le attività vengono eseguite in un contesto di esecuzione, ovvero l'host dell'agente o un contenitore. Un'attività può sovrascrivere il contesto specificando un oggetto target. Le opzioni disponibili sono host destinate all'host dell'agente e a tutti i contenitori definiti nella pipeline. Nell'esempio seguente, SampleTask@1 è eseguito nell'host e AnotherTask@1 è eseguito in un contenitore.

resources:
  containers:
  - container: pycontainer
    image: python:3.11

steps:
- task: SampleTask@1
  target: host
- task: AnotherTask@1
  target: pycontainer

Interruzione temporanea

Il periodo di timeout inizia quando il task inizia l'esecuzione e non include il tempo in cui il task viene accodato o è in attesa di un agente.

Nota

Le pipeline possono specificare un timeout a livello di lavoro oltre a un timeout a livello di attività. Se l'intervallo di timeout a livello di processo è trascorso prima del completamento di un'attività, il processo in esecuzione termina, anche se l'attività è configurata con un intervallo di timeout più lungo. Per altre informazioni, vedere Timeout.

Variabili di ambiente

È possibile usare le variabili di ambiente per eseguire il mapping delle informazioni di sistema o definite dall'utente nel processo di attività.

Un'attività della pipeline YAML può specificare una env proprietà che elenca le stringhe nome/valore che rappresentano le variabili di ambiente.

- task: AzureCLI@2
  env:
    ENV_VARIABLE_NAME: value
    ENV_VARIABLE_NAME2: value
  ...

È possibile impostare le variabili di ambiente usando script i passaggi o gli script nella riga di comando, Bash o nelle attività di PowerShell.

Nell'esempio seguente viene eseguito un script passaggio che assegna un valore alla ENV_VARIABLE_NAME variabile di ambiente e restituisce il valore .

- script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Lo script precedente è funzionalmente uguale all'esecuzione di un'attività Bash@3 con un script input. Nell'esempio seguente viene utilizzata la task sintassi .

- task: Bash@3
  inputs:
    script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Attività del programma di installazione dello strumento di build

Le attività dell'installer degli strumenti di build consentono alla pipeline di build di installare e gestire le dipendenze. È possibile usare le attività di installazione degli strumenti di compilazione per:

  • Installare uno strumento o un runtime per una compilazione, inclusi gli agenti ospitati da Microsoft.
  • Convalidare l'app o la libreria in base a più versioni di una dipendenza, ad esempio Node.js.

Per un elenco delle attività del programma di installazione degli strumenti, vedere Attività degli strumenti.

Esempio: Testare e convalidare un'app in più versioni di Node.js

L'esempio seguente configura una pipeline di compilazione per l'esecuzione e la convalida di un'app in più versioni di Node.js.

Creare un file azure-pipelines.yml con il contenuto seguente nella directory di base del progetto.

pool:
  vmImage: 'windows-latest'

jobs:
- job: NodeJS
  strategy:
    matrix:
      node14:
        nodeVersion: '14.x'
      node16:
        nodeVersion: '16.x'
    maxParallel: 2
  steps:
    - task: NodeTool@0
      displayName: 'Install Node.js $(nodeVersion)'
      inputs:
        versionSpec: '$(nodeVersion)'
        checkLatest: true

    - script: |
        echo Using Node version $(nodeVersion)
        node --version
      displayName: 'Verify Node Installation'

Salvare ed eseguire la pipeline. Il processo viene eseguito due volte, uno per ogni versione di Node.js specificata nella nodeVersion variabile.

Il programma di installazione dello strumento di Node.js scarica la versione Node.js se non è già presente nell'agente. Lo script della riga di comando scrive la versione installata nella riga di comando.

Assistenza e supporto