Definire le risorse in YAML
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Le risorse in YAML rappresentano origini di pipeline, compilazioni, repository, contenitori, pacchetti e webhook. Le risorse offrono anche la tracciabilità completa dei servizi usati nella pipeline, tra cui la versione, gli artefatti, i commit associati e gli elementi di lavoro. Quando si definisce una risorsa, questa può essere utilizzata ovunque nella pipeline. È anche possibile automatizzare completamente il flusso di lavoro DevOps sottoscrivendo gli eventi sulle risorse.
Per altre informazioni, vedere Informazioni sulle risorse e sulla definizione dello schema YAML.
Schema
resources:
pipelines: [ pipeline ]
builds: [ build ]
repositories: [ repository ]
containers: [ container ]
packages: [ package ]
webhooks: [ webhook ]
Variabili
Quando una risorsa attiva una pipeline, vengono impostate le variabili seguenti:
resources.triggeringAlias
resources.triggeringCategory
Questi valori sono vuoti se una risorsa non attiva un'esecuzione della pipeline. La variabile Build.Reason
deve essere ResourceTrigger
per questi valori da impostare.
Definire una pipelines
risorsa
Se si dispone di una pipeline che produce artefatti, è possibile utilizzare gli artefatti definendo una pipelines
risorsa. pipelines
è una risorsa dedicata solo per Azure Pipelines. È anche possibile impostare trigger in una risorsa della pipeline per i flussi di lavoro cd.
Nella definizione pipeline
della risorsa è un valore univoco che è possibile usare per fare riferimento alla risorsa della pipeline in un secondo momento. source
è il nome della pipeline che produce un artefatto. Usare l'etichetta definita da pipeline
per fare riferimento alla risorsa della pipeline da altre parti della pipeline, ad esempio quando si usano variabili di risorsa della pipeline o si scaricano elementi.
Per un modo alternativo per scaricare le pipeline, vedere le attività in Pipeline Artifacts.For an alternative way to download pipeline pipeline artifacts, see the tasks in Pipeline Artifacts.
resources: # types: pipelines | builds | repositories | containers | packages
pipelines:
- pipeline: string # identifier for the resource used in pipeline resource variables
project: string # project for the source; optional for current project
source: string # name of the pipeline that produces an artifact
version: string # the pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; Used only for manual or scheduled triggers
branch: string # branch to pick the artifact, optional; defaults to all branches; Used only for manual or scheduled triggers
tags: [ string ] # list of tags required on the pipeline to pickup default artifacts, optional; Used only for manual or scheduled triggers
trigger: # triggers aren't enabled by default unless you add trigger section to the resource
branches: # branch conditions to filter the events, optional; Defaults to all branches.
include: [ string ] # branches to consider the trigger events, optional; Defaults to all branches.
exclude: [ string ] # branches to discard the trigger events, optional; Defaults to none.
tags: [ string ] # list of tags to evaluate for trigger event, optional
stages: [ string ] # list of stages to evaluate for trigger event, optional
Importante
Quando si definisce un trigger di risorsa, se la risorsa della pipeline proviene dallo stesso repository (ad esempio self) della pipeline corrente, l'attivazione segue lo stesso ramo e il commit in cui viene generato l'evento. Tuttavia, se la risorsa della pipeline proviene da un repository diverso, la pipeline corrente viene attivata nel ramo predefinito del repository self.
Valutazione della versione dell'artefatto
La versione degli artefatti della pipeline di risorse dipende dalla modalità di attivazione della pipeline.
Se la pipeline viene eseguita perché è stata attivata manualmente o a causa di un'esecuzione pianificata, la versione della versione dell'artefatto è definita dai valori delle version
proprietà , branch
e tags
.
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 Elenco |
Artefatti della build più recente con tutti i tag specificati |
branch e tags elenco |
Artefatti della build più recente eseguita nel ramo specificato e con tutti i tag specificati |
None | Artefatti della build più recente in tutti i rami |
Di seguito è descritto un esempio. Si supponga che la pipeline contenga la definizione di risorsa seguente.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Farbrikam-CI
branch: main ### This branch input cannot have wild cards. It is used for evaluating default version when pipeline is triggered manually or scheduled.
tags: ### These tags are used for resolving default version when the pipeline is triggered manually or scheduled
- Production ### Tags are AND'ed
- PreProduction
Quando si attiva manualmente l'esecuzione della pipeline, la versione degli artefatti della MyCIAlias
pipeline è quella della build più recente eseguita nel main
ramo e con i Production
tag e PrepProduction
.
Quando la pipeline viene attivata perché una delle relative pipeline di risorse viene completata, la versione degli artefatti è quella della pipeline di attivazione. I valori delle version
proprietà , branch
e tags
vengono ignorati.
Trigger specificati | Risultato |
---|---|
branches |
Viene attivata una nuova esecuzione della pipeline corrente ogni volta che la pipeline di risorse completa correttamente un'esecuzione nei include rami |
tags |
Viene attivata una nuova esecuzione della pipeline corrente ogni volta che la pipeline di risorse completa correttamente un'esecuzione contrassegnata con tutti i tag specificati |
stages |
Viene attivata una nuova esecuzione della pipeline corrente ogni volta che la pipeline di risorse ha eseguito correttamente l'oggetto specificato stages |
branches , tags e stages |
Viene attivata una nuova esecuzione della pipeline corrente ogni volta che l'esecuzione della pipeline di risorse soddisfa tutte le condizioni di ramo, tag e fasi |
trigger: true |
Viene attivata una nuova esecuzione della pipeline corrente ogni volta che la pipeline di risorse completa correttamente un'esecuzione |
Niente | Non viene attivata alcuna nuova esecuzione della pipeline corrente quando la pipeline di risorse completa correttamente un'esecuzione |
Di seguito è descritto un esempio. Si supponga che la pipeline contenga la definizione di risorsa seguente.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
La pipeline verrà eseguita ogni volta che la SmartHotel-CI
pipeline viene eseguita in uno dei releases
rami o nel main
ramo , viene contrassegnata con e Verified
Signed
e ha completato entrambe le Production
fasi e PreProduction
.
download
per le pipeline
Tutti gli artefatti della pipeline corrente e da tutte le pipeline
risorse vengono scaricati e resi disponibili automaticamente all'inizio di ogni deployment
processo. È possibile eseguire l'override di questo comportamento. Per altre informazioni, vedere Artefatti della pipeline. Gli artefatti normali di "processo" non vengono scaricati automaticamente. Usare download
in modo esplicito quando necessario.
steps:
- download: [ current | pipeline resource identifier | none ] # disable automatic download if "none"
artifact: string ## artifact name, optional; downloads all the available artifacts if not specified
patterns: string # patterns representing files to include; optional
Gli artefatti dalla pipeline
risorsa vengono scaricati nella $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier>
cartella.
Variabili delle risorse della pipeline
In ogni esecuzione, i metadati per una risorsa della pipeline sono disponibili per tutti i processi sotto forma di variabili predefinite. <Alias>
è l'identificatore assegnato per la risorsa della pipeline. Le variabili delle risorse della pipeline sono disponibili solo in fase di esecuzione.
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID
Per altre informazioni, vedere Metadati delle risorse della pipeline come variabili predefinite.
Definire una builds
risorsa
Se si dispone di un sistema di compilazione CI esterno che produce artefatti, è possibile utilizzare gli artefatti con una builds
risorsa. Una builds
risorsa può essere qualsiasi sistema CI esterno come Jenkins, TeamCity, CircleCI e così via.
resources: # types: pipelines | builds | repositories | containers | packages
builds:
- build: string # identifier for the build resource
type: string # the type of your build service like Jenkins, circleCI etc.
connection: string # service connection for your build service.
source: string # source definition of the build
version: string # the build number to pick the artifact, defaults to Latest successful build
trigger: boolean # Triggers aren't enabled by default and should be explicitly set
builds
è una 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
. Jenkins è un tipo di risorsa in builds
.
Importante
I trigger sono supportati solo per Jenkins ospitati in cui Azure DevOps ha una linea di visualizzazione con il server Jenkins.
downloadBuild
attività per le compilazioni
È possibile utilizzare artefatti dalla build
risorsa come parte dei processi usando l'attività downloadBuild
. In base al tipo di build
risorsa definita, questa attività viene risolta automaticamente nell'attività di download corrispondente per il servizio durante l'esecuzione.
Gli artefatti dalla build
risorsa vengono scaricati nella $(PIPELINE.WORKSPACE)/<build-identifier>/
cartella.
Importante
build
gli artefatti delle risorse non vengono scaricati automaticamente nei processi o nei processi deploy-jobs. È necessario aggiungere in modo esplicito l'attività per l'utilizzo downloadBuild
degli artefatti.
- downloadBuild: string # identifier for the resource from which to download artifacts
artifact: string # artifact to download; if left blank, downloads all artifacts associated with the resource provided
patterns: string | [ string ] # a minimatch path or list of [minimatch paths](tasks/file-matching-patterns.md) to download; if blank, the entire artifact is downloaded
Definire una repositories
risorsa
Se la pipeline include modelli in un altro repository o se si vuole usare il checkout multi-repository con un repository che richiede una connessione al servizio, è necessario informare il sistema su tale repository.
La repository
parola chiave consente di specificare un repository esterno.
resources:
repositories:
- repository: string # Required as first property. Alias for the repository.
endpoint: string # ID of the service endpoint connecting to this repository.
trigger: none | trigger | [ string ] # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos).
name: string # repository name (format depends on 'type'; does not accept variables).
ref: string # ref name to checkout; defaults to 'refs/heads/main'. The branch checked out by default whenever the resource trigger fires.
type: string # Type of repository: git, github, githubenterprise, and bitbucket.
Type
Le pipeline supportano i valori seguenti per il tipo di repository: git
, github
githubenterprise
, e bitbucket
.
Il git
tipo fa riferimento ai repository Git di Azure Repos.
Tipo specificato | Risultato | Esempio |
---|---|---|
type: git |
Il name valore fa riferimento a un altro repository nello stesso progetto. |
name: otherRepo Per fare riferimento a un repository in un altro progetto all'interno della stessa organizzazione, anteporre il nome al nome del progetto. Un esempio è name: OtherProject/otherRepo . |
type: github |
Il name valore è il nome completo del repository GitHub e include l'utente o l'organizzazione. |
name: Microsoft/vscode |
type: githubenterprise |
il name valore è il nome completo del repository GitHub Enterprise e include l'utente o l'organizzazione. |
name: Microsoft/vscode |
type: bitbucket |
Il name valore è il nome completo del repository Bitbucket Cloud e include l'utente o l'organizzazione. |
name: MyBitbucket/vscode |
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.
Variabili
In ogni esecuzione, i metadati per una risorsa del repository sono disponibili per tutti i processi sotto forma di variabili di runtime. <Alias>
è l'identificatore assegnato per la risorsa del repository.
Variabili
In ogni esecuzione, i metadati per una risorsa del repository sono disponibili per tutti i processi sotto forma di variabili di runtime. <Alias>
è l'identificatore assegnato per la risorsa del repository.
Usare checkout
per usare il repository
Usare checkout
la parola chiave per usare i repository definiti come parte della repository
risorsa.
Schema
steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
fetchDepth: string # Depth of Git graph to fetch.
fetchTags: string # Set to 'true' to sync tags when fetching the repo, or 'false' to not sync tags. See remarks for the default behavior.
lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
path: string # Where to put the repository. The default is $(Build.SourcesDirectory).
condition: string # Evaluate this condition expression to determine whether to run this task.
continueOnError: boolean # Continue running even on failure?
displayName: string # Human-readable name for the task.
target: string | target # Environment in which to run this task.
enabled: boolean # Run this task when the job runs?
env: # Variables to map into the process's environment.
string: string # Name/value pairs
name: string # ID of the step.
timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
retryCountOnTaskFailure: string # Number of retries if the task fails.
I repository dalla repository
risorsa non vengono sincronizzati automaticamente nei processi. Usare checkout
per recuperare i repository come parte dei processi.
Per altre informazioni, vedere Estrazione di più repository nella pipeline.
Definire una containers
risorsa
Se è necessario usare un'immagine del contenitore come parte della pipeline di integrazione continua/recapito continuo (CI/CD), è possibile ottenerla usando containers
. Una risorsa contenitore può essere un registro Docker pubblico o privato o Registro Azure Container.
Se è necessario usare immagini dal registro Docker come parte della pipeline, è possibile definire una risorsa contenitore generica (non type
è necessaria una parola chiave).
resources:
containers:
- container: string # identifier (A-Z, a-z, 0-9, and underscore)
image: string # container image name
options: string # arguments to pass to container at startup
endpoint: string # reference to a service connection for the private registry
env: { string: string } # list of environment variables to add
ports: [ string ] # ports to expose on the container
volumes: [ string ] # volumes to mount on the container
mapDockerSocket: bool # whether to map in the Docker daemon socket; defaults to true
mountReadOnly: # volumes to mount read-only - all default to false
externals: boolean # components required to talk to the agent
tasks: boolean # tasks required by the job
tools: boolean # installable tools like Python and Ruby
work: boolean # the work directory
È possibile usare una risorsa contenitore generica come immagine utilizzata come parte del processo oppure può essere usata anche per i processi 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.
È possibile usare un tipo di risorsa contenitore di prima classe per Registro Azure Container (ACR) per usare le immagini del Registro Azure Container. Questo tipo di risorse può essere usato come parte dei processi e anche per abilitare i trigger automatici della pipeline. Per usare i trigger automatici della pipeline, è necessario disporre delle autorizzazioni di Collaboratore o Proprietario per Registro Azure Container. Per altre informazioni, vedere Registro Azure Container ruoli e autorizzazioni.
resources: # types: pipelines | repositories | containers | builds | packages
containers:
- container: string # identifier for the container resource
type: string # type of the registry like ACR, GCR etc.
azureSubscription: string # Azure subscription (ARM service connection) for container registry;
resourceGroup: string # resource group for your ACR
registry: string # registry for container images
repository: string # name of the container image repository in ACR
trigger: # Triggers aren't enabled by default and need to be set explicitly
enabled: boolean # set to 'true' to trigger on all image tags if 'tags' is unset.
tags:
include: [ string ] # image tags to consider the trigger events, optional; defaults to any new tag
exclude: [ string ] # image tags on discard the trigger events, optional; defaults to none
Nota
La sintassi usata per abilitare i trigger del contenitore per tutti i tag di immagine (enabled: 'true'
) è diversa dalla sintassi usata per altri trigger di risorse. Prestare particolare attenzione all'uso della sintassi corretta per una risorsa specifica.
Nota
Le connessioni al servizio che usano la federazione dell'identità del carico di lavoro non sono supportate in azureSubscription
.
Variabili di risorsa contenitore
Dopo aver definito un contenitore come risorsa, i metadati dell'immagine del contenitore vengono passati alla pipeline sotto forma di variabili. Le informazioni come immagine, registro e dettagli di connessione sono accessibili in tutti i processi da usare 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.
resources.container.<Alias>.type
resources.container.<Alias>.registry
resources.container.<Alias>.repository
resources.container.<Alias>.tag
resources.container.<Alias>.digest
resources.container.<Alias>.URI
resources.container.<Alias>.location
La variabile location è applicabile solo per ACR
il tipo di risorse del contenitore.
Definire una packages
risorsa
È possibile usare pacchetti GitHub NuGet e npm come risorsa nelle pipeline YAML.
Quando si specificano package
le risorse, impostare il pacchetto come NuGet o npm. È anche possibile abilitare trigger di pipeline automatizzati quando viene rilasciata una nuova versione del pacchetto.
Per usare i pacchetti GitHub, usare l'autenticazione basata su token di accesso personale e creare una connessione al servizio GitHub che usa i token di accesso personale.
Per impostazione predefinita, i pacchetti non vengono scaricati automaticamente nei processi. Per scaricare, usare getPackage
.
resources:
packages:
- package: myPackageAlias # alias for the package resource
type: Npm # type of the package NuGet/npm
connection: GitHubConnectionName # GitHub service connection with the PAT type
name: nugetTest/nodeapp # <Repository>/<Name of the package>
version: 1.0.1 # Version of the package to consume; Optional; Defaults to latest
trigger: true # To enable automated triggers (true/false); Optional; Defaults to no triggers
Definire una webhooks
risorsa
Nota
I webhook sono stati rilasciati in Azure DevOps Server 2020.1.
Con altre risorse (ad esempio, pipeline, contenitori, compilazione e pacchetti), è possibile usare gli artefatti e abilitare trigger automatizzati. Tuttavia, non è possibile automatizzare il processo di distribuzione in base ad altri eventi o servizi esterni. La webhooks
risorsa consente di integrare la pipeline con qualsiasi servizio esterno e automatizzare il flusso di lavoro. È possibile sottoscrivere qualsiasi evento esterno tramite i webhook (GitHub, GitHub Enterprise, Nexus, Artifactory e così via) e attivare le pipeline.
Per configurare i trigger webhook, seguire questa procedura.
Configurare un webhook nel servizio esterno. Quando si crea il webhook, è necessario fornire le informazioni seguenti:
URL richiesta
https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
Segreto - Facoltativo. Se è necessario proteggere il payload JSON, specificare il valore Secret .
Creare una nuova connessione al servizio "Webhook in ingresso". Questa connessione è un tipo di connessione ai servizi appena introdotto che consente di definire le seguenti informazioni importanti:
- Nome webhook: il nome del webhook deve corrispondere al webhook creato nel servizio esterno.
- Intestazione HTTP: nome dell'intestazione HTTP nella richiesta contenente il valore hash HMAC-SHA1 del payload per la verifica della richiesta. Ad esempio, per GitHub, l'intestazione della richiesta è "X-Hub-Signature".
- Segreto : il segreto viene usato per verificare l'hash HMAC-SHA1 del payload usato per la verifica della richiesta in ingresso (facoltativo). Se è stato usato un segreto durante la creazione del webhook, è necessario specificare la stessa chiave privata.
Un nuovo tipo di risorsa chiamato
webhooks
viene introdotto nelle pipeline YAML. Per sottoscrivere un evento webhook, definire una risorsa webhook nella pipeline e puntare alla 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. Utilizzare i dati del payload sotto forma di variabili nei processi.Ogni volta che la connessione al servizio Webhook in ingresso riceve un evento webhook, viene attivata una nuova esecuzione per tutte le pipeline sottoscritte all'evento webhook. È possibile usare i dati del payload JSON nei processi usando il formato
${{ parameters.<WebhookAlias>.<JSONPath>}}
resources:
webhooks:
- webhook: MyWebhookTriggerAlias ### Webhook alias
connection: IncomingWebhookConnection ### Incoming webhook service connection
filters: ### List of JSON parameters to filter; Parameters are AND'ed
- path: JSONParameterPath ### JSON path in the payload
value: JSONParameterExpectedValue ### Expected value in the path provided
I webhook automatizzano il flusso di lavoro in base a qualsiasi evento webhook esterno non supportato dalle risorse di prima classe, ad esempio pipeline, compilazioni, contenitori e 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.
Selezione della versione manuale per le risorse nella finestra di dialogo Crea esecuzione
Quando si attiva manualmente una pipeline YAML cd, viene valutata automaticamente la versione predefinita per le risorse definite nella pipeline, in base agli input forniti. Tuttavia, è possibile scegliere di selezionare una versione diversa dalla selezione della versione della risorsa quando si crea un'esecuzione.
Nel riquadro Crea esecuzione selezionare Risorse. In questa pipeline viene visualizzato un elenco di risorse utilizzate.
Selezionare una risorsa e selezionare una versione specifica dall'elenco delle versioni disponibili. La selezione delle versioni 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. Cercarli in base al numero o al ramo della pipeline. Selezionare un'esecuzione riuscita, non riuscita o in corso. Questa flessibilità garantisce che sia possibile eseguire la pipeline cd se si è certi che abbia prodotto tutti gli artefatti necessari. Non è necessario attendere il completamento o la ripetizione dell'esecuzione dell'integrazione continua a causa di un errore di fase non correlato nell'esecuzione dell'integrazione continua. Tuttavia, quando si valuta la versione predefinita per i trigger pianificati viene valutata correttamente l'esecuzione dell'integrazione continua completata o se non si usa la selezione della versione manuale.
Per le risorse in cui non è possibile recuperare le versioni disponibili, ad esempio i pacchetti GitHub, viene visualizzata una casella di testo come parte della selezione della versione, in modo da poter fornire la versione per l'esecuzione da selezionare.
Autorizzare una pipeline YAML
Le risorse devono essere autorizzate prima di poterle usare. Un proprietario della risorsa controlla gli utenti e le pipeline che possono accedere a tale risorsa. La pipeline deve essere autorizzata a usare la risorsa. Vedere i modi seguenti per autorizzare una pipeline YAML.
Passare all'esperienza di amministrazione della risorsa. Ad esempio, i gruppi di variabili e i file sicuri vengono gestiti nella pagina Libreria in Pipeline. I pool di agenti e le connessioni al servizio vengono gestiti nelle impostazioni di Project. Qui è possibile autorizzare tutte le pipeline ad accedere a tale risorsa. Questa autorizzazione è utile se non è necessario limitare l'accesso a una risorsa, ad esempio testare le risorse.
Quando si crea una pipeline per la prima volta, tutte le risorse a cui viene fatto riferimento nel file YAML vengono autorizzate automaticamente per l'uso dalla pipeline, se si è membri del ruolo Utente per tale risorsa. Quindi, le risorse a cui si fa riferimento nel file YAML quando si crea una pipeline vengono autorizzate automaticamente.
Quando si apportano modifiche al file YAML e si aggiungono risorse, la compilazione ha esito negativo con un errore simile all'errore seguente:
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.
In questo caso 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. Dopo aver autorizzato le risorse, è possibile avviare una nuova compilazione.
Verificare che i ruoli di sicurezza del pool di agenti per il progetto siano corretti.
Impostare i controlli di approvazione per le risorse
È possibile controllare manualmente quando una risorsa viene eseguita con controlli e modelli di approvazione. Con il controllo di approvazione del modello necessario, è possibile richiedere qualsiasi pipeline usando una risorsa o un ambiente estende anche da un modello YAML specifico. L'impostazione di un'approvazione del modello richiesta migliora la sicurezza. Assicurarsi che la risorsa venga usata solo in condizioni specifiche con un modello. Altre informazioni su come migliorare la sicurezza della pipeline con modelli e risorse.
Tracciabilità
Microsoft offre la tracciabilità completa per qualsiasi risorsa utilizzata a livello di processo di pipeline o distribuzione.
Tracciabilità delle pipeline
Per ogni esecuzione della pipeline vengono visualizzate le informazioni seguenti.
Risorsa che ha attivato la pipeline, se attivata da una risorsa.
Versione della risorsa e degli 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 visualizzazione seguente include le risorse utilizzate come parte dei processi di distribuzione e i commit e gli elementi di lavoro associati.
Visualizzare le informazioni sulle pipeline CD associate nelle pipeline CI
Per fornire la tracciabilità end-to-end, è possibile tenere traccia delle pipeline cd che utilizzano una pipeline CI. È possibile visualizzare l'elenco delle pipeline YAML cd in cui viene utilizzata un'esecuzione della pipeline CI tramite la pipeline
risorsa. Se altre pipeline usano la pipeline CI, viene visualizzata una scheda "Pipeline associate" nella visualizzazione di esecuzione. Qui è possibile trovare tutte le esecuzioni della pipeline che usano la pipeline e gli artefatti.
Problemi di attivazione delle risorse YAML: supporto e tracciabilità
Può generare confusione quando l'esecuzione dei trigger della pipeline non riesce. È stata aggiunta una nuova voce di menu nella pagina di definizione della pipeline denominata Problemi di trigger, in cui è possibile scoprire perché i trigger non sono in esecuzione. Per accedere a questa pagina, aprire la cronologia della pipeline. I problemi di trigger sono disponibili solo per le risorse non del repository.
I trigger di risorsa possono non essere eseguiti per i motivi seguenti.
Se l'origine della connessione al servizio fornita non è valida o se sono presenti errori di sintassi nel trigger, il trigger non è configurato, generando un errore.
Se le condizioni del trigger non corrispondono, il trigger non verrà eseguito. Viene visualizzato un avviso in modo da comprendere il motivo per cui le condizioni non sono state soddisfatte.
Passaggi successivi
Domande frequenti
Perché è consigliabile usare pipeline resources
anziché il download
collegamento?
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 scegliere di scaricare gli artefatti nei processi di compilazione o di eseguire l'override del comportamento di download nei processi di distribuzione con download
. Per altre informazioni, vedere steps.download.
Perché è consigliabile usare resources
anziché l'attività Scarica artefatti della pipeline?
Quando si usa direttamente l'attività Scarica artefatti della pipeline, si perde la tracciabilità e i trigger. A volte è opportuno usare direttamente l'attività Scarica artefatti pipeline. Ad esempio, potrebbe essere presente un'attività script archiviata in un modello diverso e l'attività script richiede il download degli artefatti di una compilazione. In alternativa, è possibile che non si sappia se un utente che usa un modello vuole aggiungere una risorsa della pipeline. 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?
È necessario configurare una pipeline di versione classica perché il trigger di risorse dei contenitori non è disponibile per l'hub Docker per le pipeline YAML.
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. 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. Si creerà una versione ogni volta che si verifica un push Docker nel repository selezionato.
Creare una nuova fase e un nuovo processo. Aggiungere due attività, l'account di accesso Docker e Bash:
L'attività Docker include l'azione e registra l'utente
login
nell'hub Docker.L'attività Bash esegue
docker pull <hub-user>/<repo-name>[:<tag>]
. Sostituirehub-user
,repo-name
etag
con i valori.
Come è possibile convalidare e risolvere i problemi dei 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. Quando si esegue la pipeline, il webhook verrà 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'erroreCannot find webhook for the given webHookId ...
, il codice potrebbe trovarsi in un ramo che non è il ramo predefinito.- Aprire la pipeline.
- Seleziona Modifica.
- Selezionare il menu altre azioni .
- Selezionare Trigger YAML Get Sources (Recupera>origini YAML).>
- Passare a Ramo predefinito per le compilazioni manuali e pianificate per aggiornare il ramo di 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.
Articoli correlati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per