Risorse nelle pipeline YAML
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Questo articolo illustra le risorse per le pipeline YAML. Una risorsa è qualsiasi elemento usato da una pipeline esistente all'esterno della pipeline. Dopo aver definito una risorsa, è possibile usarla in qualsiasi punto della pipeline.
Le risorse offrono la tracciabilità completa per i servizi usati dalla pipeline, tra cui la versione, gli artefatti, i commit associati e gli elementi di lavoro. È possibile automatizzare completamente i flussi di lavoro devOps sottoscrivendo per attivare eventi sulle risorse.
Schema delle risorse
Le risorse in YAML rappresentano origini di pipeline, compilazioni, repository, contenitori, pacchetti e webhook. Per informazioni complete sullo schema, vedere la definizione delle risorse nella guida di riferimento allo schema YAML per Azure Pipelines.
Quando una risorsa attiva una pipeline, vengono impostate le variabili seguenti:
resources.triggeringAlias
resources.triggeringCategory
La variabile Build.Reason
deve essere ResourceTrigger
per questi valori da impostare. I valori sono vuoti se una risorsa non ha attivato l'esecuzione della pipeline.
Definizione della risorsa Pipelines
Se si dispone di una pipeline che produce artefatti, è possibile utilizzare gli artefatti definendo una pipelines
risorsa. Solo Azure Pipelines può usare la pipelines
risorsa. È possibile impostare i trigger per i flussi di lavoro di distribuzione continua (CD) in una risorsa della pipeline.
Nella definizione pipeline
della risorsa è un valore univoco che è possibile usare per fare riferimento alla risorsa della pipeline in un secondo momento nella pipeline.
source
è il nome della pipeline che ha prodotto l'artefatto della pipeline. Per informazioni complete sullo schema, vedere la definizione resources.pipelines.pipeline.
Usare l'etichetta definita da pipeline
per fare riferimento alla risorsa pipeline da altre parti della pipeline, ad esempio quando si usano variabili di risorsa della pipeline o si scaricano artefatti. Per un modo alternativo per scaricare gli artefatti della pipeline, vedere Scaricare gli artefatti.
Importante
Quando si definisce un trigger di risorsa della pipeline:
- Se la
pipeline
risorsa proviene dallo stesso repository della pipeline corrente oself
, l'attivazione segue lo stesso ramo e il commit in cui viene generato l'evento. - Se la risorsa della pipeline proviene da un repository diverso, la pipeline corrente viene attivata nel ramo predefinito del
pipeline
repository di risorse.
Definizioni di risorse della pipeline di esempio
Nell'esempio seguente vengono utilizzati artefatti da una pipeline all'interno dello stesso progetto.
resources:
pipelines:
- pipeline: SmartHotel-resource # identifier to use in pipeline resource variables
source: SmartHotel-CI # name of the pipeline that produces the artifacts
Per utilizzare una pipeline da un altro progetto, includere il nome del progetto e il nome dell'origine. L'esempio seguente usa branch
per risolvere la versione predefinita quando la pipeline viene attivata manualmente o pianificata. L'input del ramo non può avere caratteri jolly.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
branch: releases/M142
L'esempio seguente illustra una risorsa della pipeline con un trigger semplice.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger: true
L'esempio seguente mostra una risorsa trigger
della pipeline con condizioni del ramo.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger:
branches:
- releases/*
- resources.triggeringAlias
Nell'esempio seguente vengono usati filtri stages
per valutare le condizioni di trigger per le pipeline CD. Le fasi usano l'operatore AND
. Al termine di tutte le fasi fornite, la pipeline cd viene attivata.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Farbrikam-CI
trigger:
stages:
- PreProduction
- Production
Nell'esempio seguente vengono tags
usati filtri per la valutazione della versione predefinita e per i trigger. I tag usano l'operatore AND
.
Sono tags
impostati nella pipeline di integrazione continua (CI) o CD. Questi tag differiscono dai tag impostati nei rami nel repository Git.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Farbrikam-CI
tags:
- Production
trigger:
tags:
- Production
- Signed
Valutazione della versione dell'artefatto pipeline
La versione dell'artefatto della pipeline di risorse dipende dalla modalità di attivazione della pipeline.
Trigger manuale o pianificato
Se l'esecuzione della pipeline viene attivata o pianificata manualmente, i valori delle version
proprietà , branch
e tags
definiscono la versione dell'artefatto. L'input branch
non può avere caratteri jolly. Le tags
proprietà usano l'operatore AND
.
Proprietà specificate | Versione dell'artefatto |
---|---|
version |
Artefatti della compilazione con il numero di esecuzione specificato |
branch |
Artefatti della build più recente eseguita nel ramo specificato |
tags lista |
Artefatti della build più recente con tutti i tag specificati |
branch e tags elenco |
Artefatti della build più recente eseguita nel ramo specificato con tutti i tag specificati |
version e branch |
Risultati della compilazione con il numero di esecuzione specificato e il ramo specificato. |
None | Artefatti della build più recente in tutti i rami |
La definizione di risorsa seguente pipeline
usa le branch
proprietà e tags
per valutare la versione predefinita quando la pipeline viene attivata manualmente o pianificata. Quando si attiva manualmente la pipeline per l'esecuzione, la versione degli artefatti della MyCIAlias
pipeline è la build più recente eseguita nel main
ramo con i Production
tag e PrepProduction
.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Farbrikam-CI
branch: main
tags:
- Production
- PreProduction
Trigger di completamento della pipeline di risorse
Quando una pipeline viene attivata a causa del completamento di una delle pipeline di risorse, la versione degli artefatti è la versione della pipeline di attivazione. I valori delle version
proprietà , branch
e tags
vengono ignorati.
Trigger specificati | Risultato |
---|---|
branches |
Un nuovo trigger di esecuzione della pipeline ogni volta che la pipeline di risorse completa correttamente un'esecuzione in uno dei include rami. |
tags |
Un nuovo trigger di esecuzione della pipeline ogni volta che la pipeline di risorse completa correttamente un'esecuzione contrassegnata con tutti i tag specificati. |
stages |
Un nuovo trigger di esecuzione della pipeline ogni volta che la pipeline di risorse esegue correttamente l'oggetto specificato stages . |
branches , tags e stages |
Un nuovo trigger di esecuzione della pipeline ogni volta che la pipeline di risorse viene eseguita soddisfa tutte le condizioni di ramo, tag e fasi. |
trigger: true |
Un nuovo trigger di esecuzione della pipeline ogni volta che la pipeline di risorse completa correttamente un'esecuzione. |
Nothing | Nessun nuovo trigger di esecuzione della pipeline quando la pipeline di risorse completa correttamente un'esecuzione. |
La pipeline seguente viene eseguita ogni volta che la pipeline di SmartHotel-CI
risorse:
- Viene eseguito in uno dei
releases
rami o nelmain
ramo - Tag con e
Verified
Signed
- Completa entrambe le
Production
fasi ePreProduction
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
Download dell'artefatto della pipeline
Il download
passaggio scarica gli artefatti associati all'esecuzione corrente o a un'altra risorsa della pipeline.
Tutti gli artefatti della pipeline corrente e tutte le relative pipeline
risorse vengono scaricati e resi disponibili automaticamente all'inizio di ogni processo di distribuzione. È possibile eseguire l'override di questo comportamento impostando download
su none
o specificando un altro identificatore di risorsa della pipeline.
Gli artefatti di processo normali non vengono scaricati automaticamente. Usare download
in modo esplicito quando necessario.
Gli artefatti della pipeline
risorsa vengono scaricati in $(PIPELINE. WORKSPACE)/<pipeline-identifier>/<artifact-identifier> cartella. Per altre informazioni, vedere Pubblicare e scaricare gli artefatti della pipeline.
La proprietà facoltativa artifact
specifica i nomi degli artefatti. Se non specificato, vengono scaricati tutti gli artefatti disponibili. La proprietà facoltativa patterns
definisce i modelli che rappresentano i file da includere. Per informazioni complete sullo schema, vedere la definizione steps.download.
- job: deploy_windows_x86_agent
steps:
- download: SmartHotel
artifact: WebTier1
patterns: '**/*.zip'
Variabili delle risorse della pipeline
In ogni esecuzione, i metadati per una risorsa della pipeline sono disponibili per tutti i processi come variabili predefinite. Queste variabili sono disponibili solo per la pipeline in fase di esecuzione e pertanto non possono essere usate nelle espressioni modello, che vengono valutate in fase di compilazione della pipeline.
Per altre informazioni, vedere Metadati delle risorse della pipeline come variabili predefinite. Per altre informazioni sulla sintassi delle variabili, vedere Definire le variabili.
Nell'esempio seguente vengono restituiti i valori di variabile predefiniti per la myresourcevars
risorsa della pipeline.
resources:
pipelines:
- pipeline: myresourcevars
source: mypipeline
trigger: true
steps:
- script: |
echo $(resources.pipeline.myresourcevars.pipelineID)
echo $(resources.pipeline.myresourcevars.runName)
echo $(resources.pipeline.myresourcevars.runID)
echo $(resources.pipeline.myresourcevars.runURI)
echo $(resources.pipeline.myresourcevars.sourceBranch)
echo $(resources.pipeline.myresourcevars.sourceCommit)
echo $(resources.pipeline.myresourcevars.sourceProvider)
echo $(resources.pipeline.myresourcevars.requestedFor)
echo $(resources.pipeline.myresourcevars.requestedForID)
Compila la definizione di risorsa
Se si dispone di un sistema di compilazione CI esterno che produce artefatti, è possibile utilizzare gli artefatti con builds
le risorse. Una build
risorsa può essere da qualsiasi sistema CI esterno, ad esempio Jenkins, TeamCity o CircleCI.
La builds
categoria è estendibile. È possibile scrivere un'estensione per utilizzare gli artefatti dal servizio di compilazione e introdurre un nuovo tipo di servizio come parte di builds
.
build
Nella definizione il version
valore predefinito è la build riuscita più recente. Non trigger
è abilitato per impostazione predefinita e deve essere impostato in modo esplicito. Per informazioni complete sullo schema, vedere la definizione resources.build.build.
Nell'esempio seguente Jenkins è la risorsa type
.
resources:
builds:
- build: Spaceworkz
type: Jenkins
connection: MyJenkinsServer
source: SpaceworkzProj # name of the Jenkins source project
trigger: true
Importante
I trigger sono supportati per Jenkins ospitati solo in cui Azure DevOps ha una linea di visualizzazione con il server Jenkins.
Attività downloadBuild
Gli build
artefatti delle risorse non vengono scaricati automaticamente nei processi o nei processi deploy-jobs. Per utilizzare gli artefatti dalla build
risorsa come parte dei processi, è necessario aggiungere in modo esplicito l'attività downloadBuild
. È possibile personalizzare il comportamento di download per ogni distribuzione o processo.
Questa attività viene risolta automaticamente nell'attività di download corrispondente per il tipo di build
risorsa definita dal runtime. Gli artefatti della build
risorsa vengono scaricati in $(PIPELINE. WORKSPACE)/<build-identifier>/ folder.
downloadBuild
Nella definizione specificare la risorsa da cui scaricare gli artefatti. La proprietà facoltativa artifact
specifica gli artefatti da scaricare. Se non specificato, vengono scaricati tutti gli artefatti associati alla risorsa.
La proprietà facoltativa patterns
definisce un percorso o un elenco di percorsi minimatch da scaricare. Se vuoto, viene scaricato l'intero artefatto. Ad esempio, il frammento di codice seguente scarica solo i file *.zip .
- job: deploy_windows_x86_agent
steps:
- downloadBuild: Spaceworkz
patterns: '**/*.zip'
Per informazioni complete sullo schema, vedere la definizione steps.downloadBuild.
Definizione della risorsa del repository
La repository
parola chiave consente di specificare un repository esterno. È possibile usare questa risorsa se la pipeline include modelli in un altro repository o si vuole usare il checkout multi-repository con un repository che richiede una connessione al servizio. È necessario informare il sistema di questi repository.
Ad esempio:
resources:
repositories:
- repository: common
type: github
name: Contoso/CommonTools
endpoint: MyContosoServiceConnection
Per informazioni complete sullo schema, vedere la definizione resources.repository.repository.
Tipi di risorse del repository
Azure Pipelines supporta i valori seguenti per il tipo di repository: git
, github
githubenterprise
, e bitbucket
.
- Il
git
tipo fa riferimento ai repository Git di Azure Repos. - I repository GitHub Enterprise richiedono una connessione al servizio GitHub Enterprise per l'autorizzazione.
- I repository di Bitbucket Cloud richiedono una connessione al servizio cloud Bitbucket per l'autorizzazione.
Type | Valore nome | Esempio |
---|---|---|
type: git |
Un altro repository nello stesso progetto o nella stessa organizzazione. | Stesso progetto: name: otherRepo Un altro progetto nella stessa organizzazione: name: otherProject/otherRepo . |
type: github |
Nome completo del repository GitHub, incluso l'utente o l'organizzazione. | name: Microsoft/vscode |
type: githubenterprise |
Nome completo del repository GitHub Enterprise, incluso l'utente o l'organizzazione. | name: Microsoft/vscode |
type: bitbucket |
Nome completo del repository Bitbucket Cloud, incluso l'utente o l'organizzazione. | name: MyBitbucket/vscode |
Variabili delle risorse del repository
In ogni esecuzione, i metadati seguenti per una risorsa del repository sono disponibili per tutti i processi sotto forma di variabili di runtime.
<Alias>
è l'identificatore che si assegna alla risorsa del repository.
resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url
Nell'esempio seguente è presente una risorsa del repository con un alias , common
in modo che le variabili di risorsa del repository siano accessibili usando resources.repositories.common.*
.
resources:
repositories:
- repository: common
type: git
ref: main
name: Repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
In ogni esecuzione, i metadati seguenti per una risorsa del repository sono disponibili per tutti i processi sotto forma di variabili di runtime.
<Alias>
è l'identificatore che si assegna alla risorsa del repository.
resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url
resources.repositories.<Alias>.version
Nell'esempio seguente è presente una risorsa del repository con un alias , common
in modo che le variabili di risorsa del repository siano accessibili usando resources.repositories.common.*
.
resources:
repositories:
- repository: common
type: git
ref: main
name: Repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
version: $[ resources.repositories.common.version ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
echo "version = $(version)"
Parola chiave Checkout per i repository
I repository dalla repository
risorsa non vengono sincronizzati automaticamente nei processi. Usare la checkout
parola chiave per recuperare un repository definito come parte della repository
risorsa. Per informazioni complete sullo schema, vedere la definizione steps.checkout.
Per altre informazioni, vedere Estrazione di più repository nella pipeline.
Definizione di risorsa contenitori
Se è necessario usare le immagini del contenitore come parte delle pipeline CI/CD, è possibile usare le containers
risorse. Una container
risorsa può essere un registro Docker pubblico o privato o un'istanza di Registro Azure Container.
È possibile usare un'immagine di risorsa contenitore generica come parte del processo o usare la risorsa per i processi del contenitore. Se la pipeline richiede il supporto di uno o più servizi, è necessario creare e connettersi ai contenitori del servizio. È possibile usare i volumi per condividere i dati tra i servizi.
Se è necessario usare immagini da un registro Docker come parte della pipeline, è possibile definire una risorsa contenitore generica. Non è necessaria alcuna type
parola chiave. Ad esempio:
resources:
containers:
- container: smartHotel
endpoint: myDockerRegistry
image: smartHotelApp
Per informazioni complete sullo schema, vedere la definizione resources.containers.container.
Nota
La enabled: 'true'
sintassi per abilitare i trigger del contenitore per tutti i tag di immagine è diversa dalla sintassi per altri trigger di risorse. Assicurarsi di usare la sintassi corretta per risorse specifiche.
Registro Azure Container tipo di risorsa
Per usare le immagini Registro Azure Container, è possibile usare il tipo di acr
risorsa contenitore di prima classe . È possibile usare questo tipo di risorsa come parte dei processi e per abilitare i trigger automatici della pipeline.
Sono necessarie autorizzazioni di collaboratore o proprietario per Registro Azure Container per l'uso dei trigger automatici della pipeline. Per altre informazioni, vedere Ruoli e autorizzazioni di Registro Azure Container.
Per usare il acr
tipo di risorsa, è necessario specificare i azureSubscription
valori , resourceGroup
e repository
per il Registro Azure Container. Ad esempio:
resources:
containers:
- container: petStore
type: acr
azureSubscription: ContosoConnection
resourceGroup: ContosoGroup
registry: petStoreRegistry
repository: myPets
trigger:
tags:
include:
- production*
Nota
La valutazione del trigger si verifica solo nel ramo predefinito. Assicurarsi di impostare il ramo predefinito corretto o di unire il file YAML nel ramo predefinito corrente. Per altre informazioni su come modificare il ramo predefinito della pipeline, vedere Il ramo predefinito della pipeline.
Variabili di risorsa contenitore
Dopo aver definito un contenitore come risorsa, i metadati dell'immagine del contenitore passano alla pipeline come variabili. Le informazioni come immagine, registro e dettagli di connessione sono accessibili in tutti i processi usati nelle attività di distribuzione del contenitore.
Le variabili delle risorse del contenitore funzionano con Docker e Registro Azure Container. Non è possibile usare le variabili delle risorse del contenitore per i contenitori di immagini locali. La location
variabile si applica solo al acr
tipo di risorse del contenitore.
L'esempio seguente ha una connessione al servizio Azure Resource Manager denominata arm-connection
. Per altre informazioni, vedere Registri, repository e immagini dei contenitori di Azure.
resources:
containers:
- container: mycontainer
type: ACR
azureSubscription: arm-connection
resourceGroup: rg-storage-eastus
registry: mycontainerregistry
repository: hello-world
trigger:
tags:
- latest
steps:
- script: echo |
echo $(resources.container.mycontainer.type)
echo $(resources.container.mycontainer.registry)
echo $(resources.container.mycontainer.repository)
echo $(resources.container.mycontainer.tag)
echo $(resources.container.mycontainer.digest)
echo $(resources.container.mycontainer.URI)
echo $(resources.container.mycontainer.location)
Definizione della risorsa pacchetti
È possibile usare pacchetti GitHub NuGet e npm come risorse nelle pipeline YAML. Per abilitare i trigger automatizzati della pipeline quando viene rilasciata una nuova versione del pacchetto, impostare la trigger
proprietà su true
.
Quando si definiscono package
le risorse, specificare il repository/<nome> del < pacchetto >name
nella proprietà e impostare il pacchetto type
come NuGet
o npm
. Per usare i pacchetti GitHub, usare l'autenticazione basata su token di accesso personale e creare una connessione al servizio GitHub che usa il token di accesso personale.
Per informazioni complete sullo schema, vedere la definizione resources.packages.package.
Per impostazione predefinita, i pacchetti non vengono scaricati automaticamente nei processi. Per scaricare, usare getPackage.
L'esempio seguente include una connessione al servizio GitHub denominata pat-contoso
a un pacchetto npm GitHub denominato contoso
. Per altre informazioni, vedere Pacchetti GitHub.
resources:
packages:
- package: contoso
type: npm
connection: pat-contoso
name: myname/contoso
version: 7.130.88
trigger: true
pool:
vmImage: 'ubuntu-latest'
steps:
- getPackage: contoso
Definizione di risorsa webhook
Nota
I webhook sono stati rilasciati in Azure DevOps Server 2020.1.
È possibile usare gli artefatti e abilitare trigger automatizzati con pipeline, contenitore, compilazione e risorse del pacchetto. Tuttavia, non è possibile usare queste risorse per automatizzare le distribuzioni in base a eventi o servizi esterni.
La webhooks
risorsa nelle pipeline YAML consente di integrare le pipeline con servizi esterni come GitHub, GitHub Enterprise, Nexus e Artifactory per automatizzare i flussi di lavoro. È possibile sottoscrivere qualsiasi evento esterno tramite webhook e usare gli eventi per attivare le pipeline.
I webhook automatizzano il flusso di lavoro in base a qualsiasi evento webhook esterno non supportato da risorse di prima classe come pipeline, compilazioni, contenitori o pacchetti. Inoltre, per i servizi locali in cui Azure DevOps non ha visibilità sul processo, è possibile configurare webhook nel servizio e attivare automaticamente le pipeline.
Per sottoscrivere un evento webhook, definire una risorsa webhook nella pipeline e puntare a una connessione al servizio webhook in ingresso. È anche possibile definire altri filtri sulla risorsa webhook, in base ai dati del payload JSON, per personalizzare i trigger per ogni pipeline.
Ogni volta che la connessione al servizio webhook in ingresso riceve un evento webhook, viene eseguito un nuovo trigger di esecuzione per tutte le pipeline sottoscritte all'evento webhook. È possibile usare i dati del payload JSON nei processi come variabili usando il formato ${{ parameters.<WebhookAlias>.<JSONPath>}}
.
Per informazioni complete sullo schema, vedere la definizione resources.webhooks.webhook.
L'esempio seguente definisce una risorsa webhook:
resources:
webhooks:
- webhook: WebHook
connection: IncomingWH
steps:
- script: echo ${{ parameters.WebHook.resource.message.title }}
Trigger webhook
Per configurare i trigger webhook, è prima necessario configurare un webhook nel servizio esterno, fornendo le informazioni seguenti:
-
URL richiesta:
https://dev.azure.com/<Azure DevOps organization>/_apis/public/distributedtask/webhooks/<webhook name>?api-version=6.0-preview
- Segreto (facoltativo): se è necessario proteggere il payload JSON, specificare un valore segreto.
Successivamente, si crea una nuova connessione al servizio webhook in ingresso. Per questo tipo di connessione al servizio, definire le informazioni seguenti:
- Nome webhook: uguale al webhook creato nel servizio esterno.
- Segreto (facoltativo): usato per verificare l'hash HMAC-SHA1 del payload per la verifica della richiesta in ingresso. Se è stato usato un segreto durante la creazione del webhook, è necessario fornire lo stesso segreto.
-
Intestazione HTTP: intestazione HTTP nella richiesta contenente il valore hash HMAC-SHA1 del payload per la verifica della richiesta. Ad esempio, l'intestazione della richiesta GitHub è
X-Hub-Signature
.
Per attivare la pipeline usando un webhook, effettuare una POST
richiesta a https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview
. Questo endpoint è disponibile pubblicamente e non richiede alcuna autorizzazione. La richiesta deve avere un corpo simile all'esempio seguente:
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Nota
L'accesso ai dati dal corpo della richiesta del webhook può causare errori YAML. Ad esempio, il passaggio - script: echo ${{ parameters.WebHook.resource.message }}
della pipeline esegue il pull dell'intero messaggio JSON, che genera YAML non valido. Qualsiasi pipeline attivata tramite questo webhook non viene eseguita perché il file YAML generato non è valido.
Il frammento di codice seguente mostra un altro esempio che usa filtri webhook.
resources:
webhooks:
- webhook: MyWebhookTrigger
connection: MyWebhookConnection
filters:
- path: repositoryName
value: maven-releases
- path: action
value: CREATED
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
Write-Host ${{ parameters.MyWebhookTrigger.component.group}}
Selezione della versione manuale per le risorse
Quando si attiva manualmente una pipeline YAML cd, Azure Pipelines valuta automaticamente le versioni predefinite per le risorse definite nella pipeline, in base agli input forniti. Tuttavia, Azure Pipelines considera le esecuzioni di integrazione continua completate solo quando si valuta la versione predefinita per i trigger pianificati o se non si sceglie manualmente una versione.
È possibile usare la selezione della versione della risorsa per scegliere manualmente una versione diversa quando si crea un'esecuzione. La selezione della versione delle risorse è supportata per le risorse della pipeline, della compilazione, del repository, del contenitore e del pacchetto.
Per le risorse della pipeline, è possibile visualizzare tutte le esecuzioni disponibili in tutti i rami, cercarle in base al numero o al ramo della pipeline e selezionare un'esecuzione riuscita, non riuscita o in corso. Questa flessibilità garantisce che sia possibile eseguire la pipeline cd se si è certi che un'esecuzione abbia prodotto tutti gli artefatti necessari. Non è necessario attendere il completamento di un'esecuzione CI o eseguirla di nuovo a causa di un errore di fase non correlato.
Per usare la selezione della versione della risorsa, nel riquadro Esegui pipeline selezionare Risorse, quindi selezionare una risorsa e selezionare una versione specifica dall'elenco delle versioni disponibili.
Per le risorse in cui non è possibile recuperare le versioni disponibili, ad esempio i pacchetti GitHub, la selezione versione fornisce un campo di testo in modo da poter immettere la versione da selezionare per l'esecuzione.
Autorizzazione delle risorse nelle pipeline YAML
Le risorse devono essere autorizzate prima di poterle usare nelle pipeline. I proprietari delle risorse controllano gli utenti e le pipeline che possono accedere alle risorse. Esistono diversi modi per autorizzare una pipeline YAML a usare le risorse.
Usare l'esperienza di amministrazione delle risorse per autorizzare tutte le pipeline ad accedere alla risorsa. Ad esempio, i gruppi di variabili e i file sicuri vengono gestiti nella pagina Libreria in Pipeline e i pool di agenti e le connessioni al servizio vengono gestiti nelle impostazioni di Project. Questa autorizzazione è utile se non è necessario limitare l'accesso alle risorse, ad esempio per le risorse di test.
Quando si crea una pipeline, tutte le risorse a cui si fa riferimento nel file YAML vengono autorizzate automaticamente per l'uso dalla pipeline se si ha il ruolo Utente per tali risorse.
Se si aggiunge una risorsa a un file YAML e la compilazione ha esito negativo con un errore simile
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.
a , viene visualizzata un'opzione per autorizzare le risorse nella compilazione non riuscita.Se si è membri del ruolo Utente per la risorsa, è possibile selezionare questa opzione e autorizzare la risorsa nella compilazione non riuscita. Dopo aver autorizzato la risorsa, è possibile avviare una nuova compilazione.
Verificare che i ruoli di sicurezza del pool di agenti per il progetto siano corretti.
Controlli di approvazione per le risorse
È possibile usare controlli e modelli di approvazione per controllare manualmente quando viene eseguita una risorsa. Con il controllo di approvazione del modello necessario, è possibile richiedere che qualsiasi pipeline che usi una risorsa o un ambiente si estenda da un modello YAML specifico.
L'impostazione di un'approvazione del modello necessaria garantisce che la risorsa venga usata solo in condizioni specifiche e migliora la sicurezza. Per altre informazioni su come migliorare la sicurezza della pipeline con i modelli, vedere Usare i modelli per la sicurezza.
Tracciabilità
Azure Pipelines offre la tracciabilità completa per qualsiasi risorsa utilizzata a livello di processo di pipeline o distribuzione.
Tracciabilità delle pipeline
Azure Pipelines mostra le informazioni seguenti per ogni esecuzione della pipeline:
- Se una risorsa ha attivato la pipeline, la risorsa che ha attivato la pipeline.
- Versione della risorsa e artefatti utilizzati.
- Commit associati a ogni risorsa.
- Elementi di lavoro associati a ogni risorsa.
Tracciabilità dell'ambiente
Ogni volta che una pipeline viene distribuita in un ambiente, è possibile visualizzare un elenco di risorse utilizzate. La vista include le risorse utilizzate come parte dei processi di distribuzione e i commit e gli elementi di lavoro associati.
Informazioni sulle pipeline cd associate nelle pipeline CI
Per fornire la tracciabilità end-to-end, è possibile tenere traccia delle pipeline cd che usano una pipeline CI specifica tramite la pipelines
risorsa. Se altre pipeline usano la pipeline CI, viene visualizzata una scheda Pipeline associate nella visualizzazione Esegui . La vista mostra tutte le esecuzioni di pipeline YAML CD che hanno utilizzato la pipeline CI e gli artefatti da esso.
Problemi relativi al trigger di risorse
L'esecuzione dei trigger di risorse può non riuscire perché:
- L'origine della connessione al servizio fornita non è valida, si verificano errori di sintassi nel trigger o il trigger non è configurato.
- Le condizioni del trigger non corrispondono.
Per vedere perché l'esecuzione dei trigger della pipeline non è riuscita, selezionare la voce di menu Trigger issues (Problemi di attivazione) nella pagina di definizione della pipeline. I problemi di trigger sono disponibili solo per le risorse nonpositive.
Nella pagina Problemi di trigger i messaggi di errore e di avviso descrivono il motivo per cui il trigger non è riuscito.
Domande frequenti
Quando è consigliabile usare le risorse delle pipeline, il collegamento per il download o l'attività Scarica artefatti della pipeline?
L'uso di una pipelines
risorsa è un modo per utilizzare gli artefatti da una pipeline di integrazione continua e configurare anche i trigger automatizzati. Una risorsa offre visibilità completa sul processo visualizzando la versione utilizzata, gli artefatti, i commit e gli elementi di lavoro. Quando si definisce una risorsa pipeline, gli artefatti associati vengono scaricati automaticamente nei processi di distribuzione.
È possibile usare il download
collegamento per scaricare gli artefatti nei processi di compilazione o per eseguire l'override del comportamento di download nei processi di distribuzione. Per altre informazioni, vedere la definizione steps.download.
L'attività Scarica artefatti pipeline non fornisce tracciabilità o trigger, ma a volte ha senso usare direttamente questa attività. Ad esempio, potrebbe essere presente un'attività script archiviata in un modello diverso che richiede il download degli artefatti di una compilazione. In alternativa, potrebbe non essere necessario aggiungere una risorsa pipeline a un modello. Per evitare dipendenze, è possibile usare l'attività Scarica artefatti pipeline per passare tutte le informazioni di compilazione a un'attività.
Come è possibile attivare un'esecuzione della pipeline quando l'immagine dell'hub Docker viene aggiornata?
Il trigger della risorsa contenitore non è disponibile per l'hub Docker per le pipeline YAML, quindi è necessario configurare una pipeline di versione classica.
- Creare una nuova connessione al servizio Docker Hub.
- Creare una pipeline di versione classica e aggiungere un artefatto dell'hub Docker. Impostare la connessione al servizio e selezionare lo spazio dei nomi, il repository, la versione e l'alias di origine.
- Selezionare il trigger e attivare o disattivare il trigger di distribuzione continua su Abilita. Ogni push Docker che si verifica nel repository selezionato crea una versione.
- Creare una nuova fase e un nuovo processo. Aggiungere due attività, l'account di accesso Docker e Bash.
- L'attività Docker ha l'azione
login
e accede all'hub Docker. - L'attività Bash esegue
docker pull <hub-user>/<repo-name>[:<tag>]
.
- L'attività Docker ha l'azione
Come è possibile convalidare e risolvere i problemi del webhook?
Creare una connessione al servizio.
Fare riferimento alla connessione al servizio e denominare il webhook nella
webhooks
sezione .resources: webhooks: - webhook: MyWebhookTriggerAlias connection: MyServiceConnection
Esegui la pipeline. Il webhook viene creato in Azure come attività distribuita per l'organizzazione.
Eseguire una
POST
chiamata API con json valido nel corpo ahttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>
. Se si riceve una risposta di codice di stato 200, il webhook è pronto per l'utilizzo dalla pipeline.
Se si riceve una risposta di codice di stato 500 con l'errore Cannot find webhook for the given webHookId ...
, il codice potrebbe trovarsi in un ramo che non è il ramo predefinito. Per risolvere questo problema:
- Selezionare Modifica nella pagina della pipeline.
- Scegliere Trigger dal menu Altre azioni.
- Selezionare la scheda YAML e quindi selezionare Recupera origini.
- In Ramo predefinito per le compilazioni manuali e pianificate aggiornare il ramo delle funzionalità.
- Selezionare Salva e coda.
- Dopo l'esecuzione di questa pipeline, eseguire una
POST
chiamata API con json valido nel corpo ahttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>
. Si dovrebbe ora ricevere una risposta al codice di stato 200.