Pijplijnartefacten publiceren en downloaden
Azure DevOps Services
Met Behulp van Azure Pipelines kunt u artefacten downloaden uit eerdere fasen in uw pijplijn of vanuit een andere pijplijn. U kunt uw artefact ook publiceren naar een bestandsshare of deze beschikbaar maken als een pijplijnartefact.
Artefacten publiceren
U kunt uw artefacten publiceren met behulp van YAML, de klassieke editor of Azure CLI:
Notitie
Het publiceren van pijplijnartefacten wordt niet ondersteund in release-pijplijnen.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Notitie
Het publish
trefwoord is een snelkoppeling voor de taak Pijplijnartefact publiceren.
Hoewel de naam van het artefact optioneel is, is het een goed idee om een naam op te geven die de inhoud van uw artefact nauwkeurig weergeeft. Als u van plan bent het artefact te gebruiken van een taak die wordt uitgevoerd op een ander besturingssysteem, moet u ervoor zorgen dat alle bestandspaden geldig zijn voor de doelomgeving. Een bestandsnaam met het teken \
of *
kan niet worden gedownload in Windows.
Het pad van het bestand/de map die u wilt publiceren, is vereist. Dit kan een absoluut of een relatief pad naar $(System.DefaultWorkingDirectory)
.
Pakketten in Azure Artifacts zijn onveranderbaar. Zodra u een pakket publiceert, is de bijbehorende versie permanent gereserveerd. Het opnieuw uitvoeren van mislukte taken mislukt als het pakket is gepubliceerd. Een goede manier om dit te benaderen als u mislukte taken opnieuw wilt uitvoeren zonder dat er al een foutpakket bestaat, is het gebruik van voorwaarden om alleen uit te voeren als de vorige taak is geslaagd.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Notitie
Er worden geen kosten in rekening gebracht voor het opslaan van pijplijnartefacten. Pijplijncaching is ook vrijgesteld van opslagfacturering. Bekijk welke artefacten tellen mee voor mijn totale gefactureerde opslag.
Let op
Als u een pijplijnuitvoering verwijdert, worden alle artefacten verwijderd die aan die uitvoering zijn gekoppeld.
.artifactignore gebruiken
.artifactignore
gebruikt een vergelijkbare syntaxis als .gitignore
(met enkele beperkingen) om op te geven welke bestanden moeten worden genegeerd bij het publiceren van artefacten. Zorg ervoor dat het .artifactignore-bestand zich in de map bevindt die is opgegeven door het targetPath-argument van de taak Publish Pipeline Artifacts.
Notitie
Het plusteken +
wordt niet ondersteund in URL-paden en sommige buildsmetagegevens voor pakkettypen zoals Maven.
Voorbeeld: alle bestanden negeren behalve .exe bestanden:
**/*
!*.exe
Belangrijk
Azure Artifacts negeert automatisch het pad naar de .git-map wanneer u geen .artifactignore-bestand hebt. U kunt dit omzeilen door een leeg .artifactignore-bestand te maken.
Artefacten downloaden
U kunt artefacten downloaden met behulp van YAML, de klassieke editor of Azure CLI.
steps:
- download: current
artifact: WebApp
- current: download artefacten die zijn geproduceerd door de huidige pijplijnuitvoering. Opties: actueel, specifiek.
Notitie
De lijst met gepubliceerde artefacten is alleen beschikbaar in de volgende afhankelijke taken. current
Gebruik daarom de optie alleen in afzonderlijke taken die afhankelijk zijn van taken met publicatieartefactentaken.
Tip
U kunt pijplijnbronnen gebruiken om uw bron op één plaats te definiëren en deze overal in uw pijplijn te gebruiken.
Notitie
Met het download
trefwoord worden artefacten gedownload. Zie steps.download voor meer informatie.
Als u een pijplijnartefact wilt downloaden uit een ander project binnen uw organisatie, moet u ervoor zorgen dat u de juiste machtigingen hebt geconfigureerd voor zowel het downstreamproject als de pijplijn die het artefact genereert. Bestanden worden standaard gedownload naar $(Pipeline.Workspace). Als er geen artefactnaam is opgegeven, wordt er een submap gemaakt voor elk gedownload artefact. U kunt overeenkomende patronen gebruiken om te beperken welke bestanden worden gedownload. Zie Patronen voor bestandskoppeling voor meer informatie.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Selectie van artefacten
Eén downloadstap kan een of meer artefacten downloaden. Als u meerdere artefacten wilt downloaden, laat u het veld naam van het artefact leeg en gebruikt u bestandskoppelingspatronen om te beperken welke bestanden worden gedownload. **
is het standaardpatroon voor bestandskoppeling (alle bestanden in alle artefacten).
Eén artefact
Wanneer een artefactnaam is opgegeven:
Alleen bestanden voor dat specifieke artefact worden gedownload. Als het artefact niet bestaat, mislukt de taak.
Bestandskoppelingspatronen worden geëvalueerd ten opzichte van de hoofdmap van het artefact. Het patroon
*.jar
komt bijvoorbeeld overeen met alle bestanden met een.jar
extensie in de hoofdmap van het artefact.
In het volgende voorbeeld ziet u hoe u alles *.js
kunt downloaden van een artefact WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Meerdere artefacten
Wanneer er geen artefactnaam is opgegeven:
Er kunnen meerdere artefacten worden gedownload en de taak mislukt niet als er geen bestanden worden gevonden.
Er wordt een submap gemaakt voor elk artefact.
Bij bestandskoppelingspatronen wordt ervan uitgegaan dat het eerste segment van het patroon een artefactnaam is (of overeenkomt). Komt bijvoorbeeld
WebApp/**
overeen met alle bestanden van hetWebApp
artefact. Het patroon*/*.dll
komt overeen met alle bestanden met een.dll
extensie in de hoofdmap van elk artefact.
In het volgende voorbeeld ziet u hoe u alle .zip
bestanden van alle artefacten kunt downloaden:
steps:
- download: current
patterns: '**/*.zip'
Een specifiek artefact downloaden
In het volgende voorbeeld ziet u hoe u pijplijnartefacten downloadt van een specifieke buildversie die wordt geproduceerd door een bepaalde uitvoering:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
Artefacten in release- en implementatietaken
Artefacten worden alleen automatisch gedownload in implementatietaken. Artefacten worden standaard gedownload naar $(Pipeline.Workspace)
. De downloadartefacttaak wordt alleen automatisch geïnjecteerd wanneer u de deploy
levenscyclushook in uw implementatie gebruikt. Als u wilt voorkomen dat artefacten automatisch worden gedownload, voegt u een download
stap toe en stelt u de waarde ervan in op geen.
In een normale buildtaak moet u expliciet het download
trefwoord of de taak Pijplijnartefact downloaden gebruiken. Zie levenscyclushook voor meer informatie over de andere typen hooks.
steps:
- download: none
Artefacten in fasen gebruiken
Als u toegang wilt hebben tot uw artefact in verschillende fasen in uw pijplijn, kunt u uw artefact nu in één fase publiceren en het vervolgens downloaden in de volgende fase met behulp van afhankelijkheden. Zie Fase-tot-fase afhankelijkheden voor meer informatie.
Opmerking
In het volgende voorbeeld kopiëren en publiceren we een scriptmap van onze opslagplaats naar de $(Build.ArtifactStagingDirectory)
. In de tweede fase downloaden en voeren we ons script uit.
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'
Migreren van buildartefacten
Pijplijnartefacten zijn de volgende generatie buildartefacten en zijn de aanbevolen manier om met artefacten te werken. Artefacten die zijn gepubliceerd met behulp van de taak Build Artifacts publiceren, kunnen nog steeds worden gedownload met buildartefacten downloaden, maar we raden u aan de meest recente taak Pijplijnartefact te gebruiken.
Bij het migreren van buildartefacten naar pijplijnartefacten:
De taak Pijplijnartefact downloaden downloadt standaard bestanden naar
$(Pipeline.Workspace)
. Dit is het standaardpad en het aanbevolen pad voor alle typen artefacten.Bestandskoppelingspatronen voor de taak BuildArtefacten downloaden beginnen naar verwachting met de naam (of overeenkomst) van het artefact, ongeacht of er een specifiek artefact is opgegeven of niet. In de taak Pijplijnartefact downloaden mogen patronen de artefactnaam niet bevatten wanneer er al een artefactnaam is opgegeven. Zie selectie van één artefact voor meer informatie.
Opmerking
- 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: (vereist) Het pad van het bestand of de map die moet worden gepubliceerd. Kan absoluut of relatief zijn ten opzichte van de standaardwerkmap. Kan variabelen bevatten, maar jokertekens worden niet ondersteund. Standaard: $(Pipeline.Workspace).
publishLocation: (Vereist) Artefacten publiceren locatie. Kies of u het artefact in Azure Pipelines wilt opslaan of wilt kopiëren naar een bestandsshare die toegankelijk moet zijn via de pijplijnagent. Opties:
pipeline
,filepath
. Standaard: pijplijn.artefact: (Optioneel) Naam van het artefact dat moet worden gepubliceerd. Als dit niet is ingesteld, wordt standaard een unieke id ingesteld op de taak.
Gepubliceerde artefacten weergeven
Zodra de pijplijnuitvoering is voltooid, volgt u deze stappen om uw gepubliceerde artefact weer te geven of te downloaden:
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen, selecteer de pijplijnuitvoering en selecteer vervolgens het tabblad Samenvatting .
Selecteer in de gerelateerde sectie het gepubliceerde artefact.
Vouw de vervolgkeuzelijst uit om uw artefact te vinden. Vervolgens kunt u uw artefact downloaden en de inhoud ervan verkennen.
Veelgestelde vragen
V: Wat zijn buildartefacten?
A: Build-artefacten zijn de bestanden die door uw build worden gegenereerd. Zie Build Artifacts voor meer informatie over het publiceren en gebruiken van uw buildartefacten.
V: Kan ik pijplijnartefacten verwijderen bij het opnieuw uitvoeren van mislukte taken?
A: Pijplijnartefacten zijn niet te verwijderen of overschrijfbaar. Als u artefacten opnieuw wilt genereren wanneer u een mislukte taak opnieuw uitvoert, kunt u de taak-id opnemen in de naam van het artefact. $(system.JobId)
is de juiste variabele voor dit doel. Zie Systeemvariabelen voor meer informatie over vooraf gedefinieerde variabelen.
V: Hoe krijg ik toegang tot artefactenfeeds achter een firewall?
A: Als uw organisatie een firewall of een proxyserver gebruikt, moet u ervoor zorgen dat u URL's en IP-adressen van Azure Artifacts-domeinen toestaat.
Verwante artikelen:
- Artefacten bouwen
- Releases in Azure Pipelines
- Release artifacts en Artifact sources (Artefacten en artefactbronnen vrijgeven)
- Risico's beperken bij het gebruik van privépakketfeeds