Pubblicare e scaricare gli artefatti della pipeline
Servizi di Azure DevOps
Con Azure Pipelines è possibile scaricare gli artefatti dalle fasi precedenti della pipeline o da un'altra pipeline. È anche possibile pubblicare l'artefatto in una condivisione file o renderlo disponibile come artefatto della pipeline.
Pubblicare elementi
È possibile pubblicare gli artefatti usando YAML, l'editor classico o l'interfaccia della riga di comando di Azure:
Nota
La pubblicazione degli artefatti della pipeline non è supportata nelle pipeline di versione.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Anche se il nome dell'artefatto è facoltativo, è consigliabile specificare un nome che rifletta accuratamente il contenuto dell'artefatto. Se si prevede di utilizzare l'artefatto da un processo in esecuzione in un sistema operativo diverso, è necessario assicurarsi che tutti i percorsi di file siano validi per l'ambiente di destinazione. Ad esempio, un nome di file contenente il carattere \
o *
non riuscirà a scaricarlo in Windows.
Il percorso del file o della cartella da pubblicare è obbligatorio. Può trattarsi di un percorso assoluto o relativo a $(System.DefaultWorkingDirectory)
.
I pacchetti in Azure Artifacts non sono modificabili. Dopo aver pubblicato un pacchetto, la relativa versione è riservata in modo permanente. Se il pacchetto è stato pubblicato, la riesecuzione dei processi non riusciti avrà esito negativo. Un buon modo per risolvere questo problema se si vuole essere in grado di rieseguire processi non riusciti senza riscontrare già un pacchetto di errore, è usare Condizioni per l'esecuzione solo se il processo precedente è riuscito.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Nota
Non verrà addebitato alcun costo per l'archiviazione degli artefatti della pipeline. La memorizzazione nella cache della pipeline è anche esente dalla fatturazione dell'archiviazione. Vedere Quali artefatti vengono conteggiati per l'archiviazione totale fatturata.
Attenzione
L'eliminazione di un'esecuzione della pipeline comporterà l'eliminazione di tutti gli artefatti associati a tale esecuzione.
Usare .artifactignore
.artifactignore
usa una sintassi simile a .gitignore
(con poche limitazioni) per specificare quali file devono essere ignorati durante la pubblicazione degli artefatti. Assicurarsi che il file con estensione artifactignore si trovi all'interno della directory specificata dall'argomento targetPath dell'attività Publish Pipeline Artifacts.
Nota
Il carattere +
segno più non è supportato nei percorsi URL e alcuni metadati di compilazione per i tipi di pacchetto, ad esempio Maven.
Esempio: ignorare tutti i file tranne .exe file:
**/*
!*.exe
Importante
Azure Artifacts ignora automaticamente il percorso della cartella .git quando non si dispone di un file con estensione artifactignore . È possibile ignorare questo problema creando un file con estensione artifactignore vuoto.
Scaricare gli artefatti
È possibile scaricare elementi usando YAML, l'editor classico o l'interfaccia della riga di comando di Azure.
steps:
- download: current
artifact: WebApp
- current: scaricare gli artefatti prodotti dall'esecuzione della pipeline corrente. Opzioni: corrente, specifica.
Nota
L'elenco degli artefatti pubblicati sarà disponibile solo nei processi dipendenti seguenti. Pertanto, usare l'opzione current
solo in processi separati, con dipendenza dai processi con attività di pubblicazione degli artefatti.
Suggerimento
È possibile usare le risorse della pipeline per definire l'origine in un'unica posizione e usarla ovunque nella pipeline.
Nota
La download
parola chiave scarica gli artefatti. Per altre informazioni, vedere steps.download.
Per scaricare un artefatto della pipeline da un progetto diverso all'interno dell'organizzazione, assicurarsi di disporre delle autorizzazioni appropriate configurate sia per il progetto downstream che per la pipeline che genera l'artefatto. Per impostazione predefinita, i file vengono scaricati in $(Pipeline.Workspace). Se non è stato specificato un nome di artefatto, verrà creata una sottodirectory per ogni artefatto scaricato. È possibile usare modelli di corrispondenza per limitare i file scaricati. Per altri dettagli, vedere Modelli di corrispondenza dei file.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Selezione artefatti
Un singolo passaggio di download può scaricare uno o più artefatti. Per scaricare più artefatti, lasciare vuoto il campo del nome dell'artefatto e usare i criteri di corrispondenza dei file per limitare i file da scaricare. **
è il modello di corrispondenza dei file predefinito (tutti i file in tutti gli artefatti).
Singolo artefatto
Quando viene specificato un nome di artefatto:
Vengono scaricati solo i file per tale artefatto specifico. Se l'artefatto non esiste, l'attività avrà esito negativo.
I criteri di corrispondenza dei file vengono valutati in relazione alla radice dell'artefatto. Ad esempio, il modello
*.jar
corrisponde a tutti i file con un'estensione.jar
nella radice dell'artefatto.
Nell'esempio seguente viene illustrato come scaricare tutto *.js
da un artefatto WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Più artefatti
Quando non viene specificato alcun nome di artefatto:
È possibile scaricare più artefatti e l'attività non ha esito negativo se non vengono trovati file.
Viene creata una sottodirectory per ogni artefatto.
I criteri di corrispondenza dei file devono presupporre che il primo segmento del modello sia (o corrisponda) a un nome di artefatto. Ad esempio,
WebApp/**
corrisponde a tutti i file dell'artefattoWebApp
. Il modello*/*.dll
corrisponde a tutti i file con un'estensione.dll
nella radice di ogni artefatto.
L'esempio seguente illustra come scaricare tutti i .zip
file da tutti gli artefatti:
steps:
- download: current
patterns: '**/*.zip'
Scaricare un artefatto specifico
L'esempio seguente illustra come scaricare gli artefatti della pipeline da una versione di compilazione specifica prodotta da una determinata esecuzione:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
Artefatti nei processi di rilascio e distribuzione
Gli artefatti vengono scaricati automaticamente nei processi di distribuzione. Per impostazione predefinita, gli artefatti vengono scaricati in $(Pipeline.Workspace)
. L'attività di download artefatto verrà inserita automaticamente solo quando si usa l'hook del deploy
ciclo di vita nella distribuzione. Per impedire il download automatico degli artefatti, aggiungere un download
passaggio e impostarne il valore su nessuno.
In un normale processo di compilazione è necessario usare in modo esplicito la download
parola chiave step o l'attività Scarica artefatto pipeline. Per altre informazioni sugli altri tipi di hook, vedere Hook del ciclo di vita.
steps:
- download: none
Usare artefatti in più fasi
Se si vuole poter accedere all'artefatto in diverse fasi della pipeline, è ora possibile pubblicare l'artefatto in una fase e scaricarlo nella fase successiva sfruttando le dipendenze. Per altre informazioni, vedere Dipendenze da fase a fase.
Esempio
Nell'esempio seguente verrà copiata e pubblicata una cartella script dal repository in $(Build.ArtifactStagingDirectory)
. Nella seconda fase verrà scaricato ed eseguito lo script.
trigger:
- main
stages:
- stage: build
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
inputs:
solution: '**/*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: 'Any CPU'
configuration: 'Release'
- task: CopyFiles@2
displayName: 'Copy scripts'
inputs:
contents: 'scripts/**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- publish: '$(Build.ArtifactStagingDirectory)/scripts'
displayName: 'Publish script'
artifact: drop
- stage: test
dependsOn: build
jobs:
- job: run_test
pool:
vmImage: 'windows-latest'
steps:
- download: current
artifact: drop
- task: PowerShell@2
inputs:
filePath: '$(Pipeline.Workspace)\drop\test.ps1'
Eseguire la migrazione da elementi di compilazione
Gli artefatti della pipeline sono la generazione successiva di artefatti di compilazione e sono il modo consigliato per lavorare con gli artefatti. Gli artefatti pubblicati usando l'attività Pubblica artefatti di compilazione possono comunque essere scaricati usando Scarica artefatti di compilazione, ma è consigliabile usare l'attività Scarica artefatto pipeline più recente.
Durante la migrazione dagli artefatti di compilazione agli artefatti della pipeline:
Per impostazione predefinita, l'attività Scarica elemento pipeline scarica i file in
$(Pipeline.Workspace)
. Si tratta del percorso predefinito e consigliato per tutti i tipi di artefatti.È previsto che i criteri di corrispondenza dei file per l'attività Scarica artefatti di compilazione inizino con (o corrispondano) al nome dell'artefatto, indipendentemente dal fatto che sia stato specificato o meno un artefatto specifico. Nell'attività Scarica artefatto pipeline i modelli non devono includere il nome dell'artefatto quando è già stato specificato un nome di artefatto. Per altre informazioni, vedere Selezione di singoli artefatti.
Esempio
- task: PublishPipelineArtifact@1
displayName: 'Publish pipeline artifact'
inputs:
targetPath: '$(Pipeline.Workspace)'
${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
artifact: 'prod'
${{ else }}:
artifact: 'dev'
publishLocation: 'pipeline'
targetPath: (Obbligatorio) Percorso del file o della directory da pubblicare. Può essere assoluto o relativo alla directory di lavoro predefinita. Può includere variabili, ma i caratteri jolly non sono supportati. Impostazione predefinita: $(Pipeline.Workspace).
publishLocation: (Obbligatorio) Percorso di pubblicazione degli artefatti. Scegliere se archiviare l'artefatto in Azure Pipelines o copiarlo in una condivisione file che deve essere accessibile dall'agente della pipeline. Opzioni:
pipeline
,filepath
. Impostazione predefinita: pipeline.artifact: (facoltativo) Nome dell'artefatto da pubblicare. Se non è impostato, per impostazione predefinita viene impostato un ID univoco con ambito per il processo.
Visualizzare gli artefatti pubblicati
Al termine dell'esecuzione della pipeline, seguire questa procedura per visualizzare o scaricare l'artefatto pubblicato:
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Pipeline, selezionare l'esecuzione della pipeline e quindi selezionare la scheda Riepilogo .
Nella sezione correlata selezionare l'artefatto pubblicato.
Espandere la cartella di rilascio per individuare l'artefatto. È quindi possibile scaricare l'artefatto ed esplorarne il contenuto.
Domande frequenti
D: Cosa sono gli artefatti di compilazione?
R: Gli artefatti di compilazione sono i file generati dalla compilazione. Per altre informazioni su come pubblicare e usare gli artefatti di compilazione, vedere Creare artefatti.
D: È possibile eliminare gli artefatti della pipeline quando si eseguono nuovamente processi non riusciti?
R: Gli artefatti della pipeline non sono eliminabili o sovrascrivibili. Se si desidera rigenerare gli artefatti quando si esegue nuovamente un processo non riuscito, è possibile includere l'ID processo nel nome dell'artefatto. $(system.JobId)
è la variabile appropriata a questo scopo. Per altre informazioni sulle variabili predefinite, vedere Variabili di sistema .
D: Come è possibile accedere ai feed artifacts dietro un firewall?
R: Se l'organizzazione usa un firewall o un server proxy, assicurarsi di consentire GLI URL e gli indirizzi IP del dominio di Azure Artifacts.