Publicera och ladda ned pipelineartefakter
Azure DevOps Services
Med Hjälp av Azure Pipelines kan du ladda ned artefakter från tidigare steg i din pipeline eller från en annan pipeline. Du kan också publicera artefakten till en filresurs eller göra den tillgänglig som en pipelineartefakt.
Publicera artefakter
Du kan publicera dina artefakter med hjälp av YAML, den klassiska redigeraren eller Azure CLI:
Kommentar
Publicering av pipelineartefakter stöds inte i versionspipelines.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Kommentar
Nyckelordet publish
är en genväg för aktiviteten Publicera pipelineartefakt .
Även om artefaktens namn är valfritt är det en bra idé att ange ett namn som korrekt återspeglar innehållet i artefakten. Om du planerar att använda artefakten från ett jobb som körs på ett annat operativsystem måste du se till att alla filsökvägar är giltiga för målmiljön. Till exempel ett filnamn som innehåller tecknet \
eller *
som inte kan laddas ned i Windows.
Sökvägen till den fil/mapp som du vill publicera krävs. Detta kan vara en absolut eller relativ sökväg till $(System.DefaultWorkingDirectory)
.
Paket i Azure Artifacts är oföränderliga. När du publicerar ett paket är dess version permanent reserverad. Det går inte att köra misslyckade jobb igen om paketet har publicerats. Ett bra sätt att närma dig detta om du vill kunna köra misslyckade jobb igen utan att det redan finns ett felpaket är att använda Villkor för att endast köra om det tidigare jobbet lyckades.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Kommentar
Du debiteras inte för lagring av pipelineartefakter. Cachelagring av pipelinen är också undantagen från lagringsfakturering. Se Vilka artefakter som räknas mot min totala fakturerade lagring.
Varning
Om du tar bort en pipelinekörning tas alla artefakter som är associerade med den körningen bort.
Använda .artifactignore
.artifactignore
använder en liknande syntax som .gitignore
(med få begränsningar) för att ange vilka filer som ska ignoreras när artefakter publiceras. Kontrollera att .artifactignore-filen finns i katalogen som anges av targetPath-argumentet för aktiviteten Publicera pipelineartefakter.
Kommentar
Plustecknet +
stöds inte i URL-sökvägar och vissa bygger metadata för pakettyper som Maven.
Exempel: ignorera alla filer utom .exe filer:
**/*
!*.exe
Viktigt!
Azure Artifacts ignorerar automatiskt .git-mappsökvägen när du inte har en .artifactignore-fil . Du kan kringgå detta genom att skapa en tom .artifactignore-fil .
Ladda ned artefakter
Du kan ladda ned artefakter med hjälp av YAML, den klassiska redigeraren eller Azure CLI.
steps:
- download: current
artifact: WebApp
- aktuell: ladda ned artefakter som skapats av den aktuella pipelinekörningen. Alternativ: aktuell, specifik.
Kommentar
Listan över publicerade artefakter är endast tillgänglig i följande beroende jobb. current
Använd därför alternativet endast i separata jobb som är beroende av jobb med publiceringsartefakter.
Dricks
Du kan använda Pipeline-resurser för att definiera källan på ett ställe och använda den var som helst i pipelinen.
Kommentar
Nyckelordet download
laddar ned artefakter. Mer information finns i steps.download.
Om du vill ladda ned en pipelineartefakt från ett annat projekt i organisationen kontrollerar du att du har rätt behörigheter konfigurerade för både ditt nedströmsprojekt och nedströmspipelinen. Som standard laddas filer ned till $(Pipeline.Workspace). Om ett artefaktnamn inte har angetts skapas en underkatalog för varje nedladdad artefakt. Du kan använda matchande mönster för att begränsa vilka filer som laddas ned. Mer information finns i Filmatchningsmönster .
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Markering av artefakter
Ett enda nedladdningssteg kan ladda ned en eller flera artefakter. Om du vill ladda ned flera artefakter lämnar du fältet artefaktnamn tomt och använder filmatchningsmönster för att begränsa vilka filer som ska laddas ned. **
är standardmönstret för filmatchning (alla filer i alla artefakter).
Enskild artefakt
När ett artefaktnamn anges:
Endast filer för den specifika artefakten laddas ned. Om artefakten inte finns misslyckas uppgiften.
Filmatchningsmönster utvärderas i förhållande till artefaktens rot. Mönstret
*.jar
matchar till exempel alla filer med ett.jar
tillägg i artefaktens rot.
I följande exempel visas hur du laddar ned allt *.js
från en artefakt WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Flera artefakter
När inget artefaktnamn har angetts:
Flera artefakter kan laddas ned och uppgiften misslyckas inte om inga filer hittas.
En underkatalog skapas för varje artefakt.
Filmatchningsmönster bör förutsätta att det första segmentet i mönstret är (eller matchar) ett artefaktnamn. Matchar till exempel
WebApp/**
alla filer frånWebApp
artefakten. Mönstret*/*.dll
matchar alla filer med ett.dll
tillägg i roten för varje artefakt.
I följande exempel visas hur du laddar ned alla .zip
filer från alla artefakter:
steps:
- download: current
patterns: '**/*.zip'
Artefakter i versions- och distributionsjobb
Artefakter laddas bara ned automatiskt i distributionsjobb. Som standard laddas artefakter ned till $(Pipeline.Workspace)
. Nedladdningsartefaktuppgiften matas bara in automatiskt när du använder deploy
livscykelkroken i distributionen. Om du vill förhindra att artefakter laddas ned automatiskt lägger du till ett download
steg och anger dess värde till inget.
I ett vanligt byggjobb måste du uttryckligen download
använda stegets nyckelord eller uppgiften Ladda ned pipelineartefakt. Se livscykelkrokar för att lära dig mer om de andra typerna av krokar.
steps:
- download: none
Använda artefakter i olika faser
Om du vill kunna komma åt artefakten i olika steg i pipelinen kan du nu publicera artefakten i ett steg och sedan ladda ned den i nästa steg med hjälp av beroenden. Mer information finns i Steg-till-steg-beroenden.
Exempel
I följande exempel kopierar och publicerar vi en skriptmapp från lagringsplatsen till $(Build.ArtifactStagingDirectory)
. I den andra fasen laddar vi ned och kör skriptet.
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'
Migrera från byggartefakter
Pipelineartefakter är nästa generations byggartefakter och är det rekommenderade sättet att arbeta med artefakter. Artefakter som publicerats med uppgiften Publicera byggartefakter kan fortfarande laddas ned med hjälp av Ladda ned byggartefakter, men vi rekommenderar att du använder den senaste åtgärden Ladda ned pipelineartefakt i stället.
När du migrerar från byggartefakter till pipelineartefakter:
Som standard laddar aktiviteten Ladda ned pipelineartefakt ned filer till
$(Pipeline.Workspace)
. Det här är standardsökvägen och den rekommenderade sökvägen för alla typer av artefakter.Filmatchningsmönster för aktiviteten Hämta byggartefakter förväntas börja med (eller matcha) artefaktnamnet, oavsett om en specifik artefakt har angetts eller inte. I aktiviteten Ladda ned pipelineartefakt bör mönster inte innehålla artefaktnamnet när ett artefaktnamn redan har angetts. Mer information finns i enkel artefaktval.
Exempel
- 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: (Krävs) Sökvägen till filen eller katalogen som ska publiceras. Kan vara absolut eller i förhållande till standardarbetskatalogen. Kan innehålla variabler, men jokertecken stöds inte. Standard: $(Pipeline.Workspace).
publishLocation: (Krävs) Artefakter publicerar plats. Välj om artefakten ska lagras i Azure Pipelines eller kopiera den till en filresurs som måste vara tillgänglig från pipelineagenten. Alternativ:
pipeline
,filepath
. Standard: pipeline.artefakt: (valfritt) Namnet på artefakten som ska publiceras. Om det inte anges är standardvärdet ett unikt ID som är begränsat till jobbet.
Visa publicerade artefakter
När pipelinekörningen är klar följer du de här stegen för att visa eller ladda ned den publicerade artefakten:
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Pipelines, välj pipelinekörningen och välj sedan fliken Sammanfattning .
I det relaterade avsnittet väljer du den publicerade artefakten.
Expandera mappen drop för att hitta artefakten. Du kan sedan ladda ned artefakten och utforska dess innehåll.
Vanliga frågor
F: Vad är byggartefakter?
S: Skapa artefakter är de filer som genereras av din version. Mer information om hur du publicerar och använder byggartefakter finns i Skapa artefakter .
F: Kan jag ta bort pipelineartefakter när misslyckade jobb körs igen?
S: Pipelineartefakter är inte borttagningsbara eller överskrivningsbara. Om du vill återskapa artefakter när du kör ett misslyckat jobb igen kan du inkludera jobb-ID:t i artefaktnamnet. $(system.JobId)
är lämplig variabel för detta ändamål. Mer information om fördefinierade variabler finns i Systemvariabler .
F: Hur kan jag komma åt artefakter feeds bakom en brandvägg?
S: Om din organisation använder en brandvägg eller en proxyserver ser du till att du tillåter URL:er och IP-adresser för Azure Artifacts-domäner.