Publikování a stahování artefaktů kanálu
Služby Azure DevOps
Pomocí Azure Pipelines můžete stáhnout artefakty z dřívějších fází kanálu nebo z jiného kanálu. Artefakt můžete také publikovat do sdílené složky nebo ho zpřístupnit jako artefakt kanálu.
Publikování artefaktů
Artefakty můžete publikovat pomocí YAML, klasického editoru nebo Azure CLI:
Poznámka:
Artefakty kanálu publikování se v kanálech verze nepodporují.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Poznámka:
Klíčové publish
slovo je zástupce úlohy Publikovat kanál artefaktu .
I když je název artefaktu nepovinný, je vhodné zadat název, který přesně odpovídá obsahu artefaktu. Pokud plánujete využívat artefakt z úlohy spuštěné v jiném operačním systému, musíte zajistit, aby všechny cesty k souborům byly platné pro cílové prostředí. Například název souboru obsahujícího znak \
nebo *
se nepovede stáhnout ve Windows.
Je vyžadována cesta k souboru nebo složce, kterou chcete publikovat. Může to být absolutní nebo relativní cesta k $(System.DefaultWorkingDirectory)
.
Balíčky v Azure Artifacts jsou neměnné. Jakmile balíček publikujete, jeho verze se trvale rezervuje. Opětovné spuštění neúspěšných úloh selže, pokud byl balíček publikován. Dobrým způsobem, jak k tomu přistupovat, pokud chcete být schopni znovu spustit neúspěšné úlohy bez již existujícího balíčku chyby, je použít podmínky ke spuštění pouze v případě, že předchozí úloha proběhla úspěšně.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Poznámka:
Za ukládání artefaktů kanálu se vám nebudou účtovat poplatky. Ukládání do mezipaměti kanálu je také vyloučeno z fakturace úložiště. Podívejte se , které artefakty se započítávají do celkového fakturovaného úložiště.
Upozornění
Odstraněním spuštění kanálu dojde k odstranění všech artefaktů přidružených k běhu.
Použití .artifactignore
.artifactignore
používá podobnou syntaxi ( .gitignore
s několika omezeními) k určení souborů, které se mají při publikování artefaktů ignorovat. Ujistěte se, že se soubor .artifactignore nachází v adresáři určeném argumentem targetPath úlohy Publish Pipeline Artifacts.
Poznámka:
Znak plus +
není podporován v cestách URL a některá metadata sestavení pro typy balíčků, jako je Maven.
Příklad: ignorujte všechny soubory kromě .exe souborů:
**/*
!*.exe
Důležité
Azure Artifacts automaticky ignoruje cestu ke složce .git , pokud nemáte soubor .artifactignore . Můžete to obejít vytvořením prázdného souboru .artifactignore .
Stažení artefaktů
Artefakty si můžete stáhnout pomocí YAML, klasického editoru nebo Azure CLI.
steps:
- download: current
artifact: WebApp
- current: Stáhněte artefakty vytvořené aktuálním spuštěním kanálu. Možnosti: aktuální, specifické.
Poznámka:
Seznam publikovaných artefaktů bude k dispozici pouze v následujících závislých úlohách. Proto použijte current
možnost pouze v samostatných úlohách, které jsou závislé na úlohách s úlohami publikování artefaktů.
Tip
Prostředky kanálu můžete použít k definování zdroje na jednom místě a jeho použití kdekoli ve vašem kanálu.
Poznámka:
Klíčové download
slovo stáhne artefakty. Další informace najdete v tématu steps.download.
Pokud chcete stáhnout artefakt kanálu z jiného projektu ve vaší organizaci, ujistěte se, že máte nakonfigurovaná odpovídající oprávnění pro podřízený projekt i kanál, který generuje artefakt. Ve výchozím nastavení se soubory stáhnou do $(Pipeline.Workspace). Pokud nebyl zadán název artefaktu, vytvoří se podadresář pro každý stažený artefakt. K omezení souborů, které se stáhnou, můžete použít odpovídající vzory. Další podrobnosti najdete v tématu Vzory porovnávání souborů.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Výběr artefaktů
Jeden krok stahování může stáhnout jeden nebo více artefaktů. Pokud chcete stáhnout více artefaktů, ponechte pole názvu artefaktu prázdné a pomocí vzorů porovnávání souborů omezte, které soubory se stáhnou. **
je výchozí vzor porovnávání souborů (všechny soubory ve všech artefaktech).
Jeden artefakt
Při zadání názvu artefaktu:
Stáhnou se jenom soubory pro daný artefakt. Pokud artefakt neexistuje, úloha selže.
Vzory porovnávání souborů se vyhodnocují vzhledem ke kořenovému adresáři artefaktu. Vzor například
*.jar
odpovídá všem souborům s příponou.jar
v kořenovém adresáři artefaktu.
Následující příklad ukazuje, jak stáhnout vše *.js
z artefaktu WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Více artefaktů
Pokud není zadán žádný název artefaktu:
Více artefaktů je možné stáhnout a úloha se nezdaří, pokud nejsou nalezeny žádné soubory.
Pro každý artefakt se vytvoří podadresář.
Vzory porovnávání souborů by měly předpokládat, že první segment vzoru je (nebo odpovídá) názvu artefaktu. Například
WebApp/**
odpovídá všem souborům z artefaktuWebApp
. Vzor*/*.dll
odpovídá všem souborům s příponou.dll
v kořenovém adresáři každého artefaktu.
Následující příklad ukazuje, jak stáhnout všechny .zip
soubory ze všech artefaktů:
steps:
- download: current
patterns: '**/*.zip'
Stažení konkrétního artefaktu
Následující příklad ukazuje, jak stáhnout artefakty kanálu z konkrétní verze sestavení vytvořené konkrétním spuštěním:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
Artefakty v úlohách vydaných verzí a nasazení
Artefakty se stáhnou jenom automaticky v úlohách nasazení. Ve výchozím nastavení se artefakty stáhnou do $(Pipeline.Workspace)
. Úloha artefaktu stahování se automaticky vloží pouze při použití deploy
háku životního cyklu v nasazení. Pokud chcete zastavit automatické stahování artefaktů, přidejte download
krok a nastavte jeho hodnotu na žádné.
V běžné úloze sestavení musíte explicitně použít download
klíčové slovo kroku nebo úlohu Stažení artefaktu kanálu. Další informace o dalších typech háků najdete v hácích životního cyklu.
steps:
- download: none
Použití artefaktů napříč fázemi
Pokud chcete mít přístup k artefaktu v různých fázích kanálu, můžete teď artefakt publikovat v jedné fázi a potom ho v další fázi stáhnout s využitím závislostí. Další podrobnosti najdete v tématu věnovaném závislostem v jednotlivých fázích.
Příklad
V následujícím příkladu zkopírujeme a publikujeme složku skriptu z našeho úložiště do souboru $(Build.ArtifactStagingDirectory)
. Ve druhé fázi stáhneme a spustíme skript.
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'
Migrace z artefaktů sestavení
Artefakty kanálu představují novou generaci artefaktů sestavení a doporučuje se pracovat s artefakty. Artefakty publikované pomocí úlohy Publikovat artefakty sestavení je stále možné stáhnout pomocí funkce Stáhnout artefakty sestavení, ale doporučujeme místo toho použít nejnovější úlohu Stažení artefaktu kanálu.
Při migraci z artefaktů sestavení na artefakty kanálu:
Ve výchozím nastavení úloha Download Pipeline Artifact stahuje soubory do
$(Pipeline.Workspace)
. Toto je výchozí a doporučená cesta pro všechny typy artefaktů.Očekává se, že vzory porovnávání souborů pro úlohu Stáhnout artefakty sestavení začínají názvem artefaktu (nebo shodou) bez ohledu na to, jestli byl zadaný nebo ne konkrétní artefakt. V úloze Stažení artefaktu kanálu by vzory neměly obsahovat název artefaktu, pokud už byl zadán název artefaktu. Další informace najdete v tématu výběr jednoho artefaktu.
Příklad
- 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: (Povinné) Cesta k souboru nebo adresáři k publikování. Může být absolutní nebo relativní vzhledem k výchozímu pracovnímu adresáři. Může obsahovat proměnné, ale zástupné dokumentace se nepodporují. Výchozí hodnota: $(Pipeline.Workspace).
publishLocation: (Povinné) Umístění publikování artefaktů Zvolte, jestli se má artefakt uložit ve službě Azure Pipelines, nebo ho zkopírovat do sdílené složky, která musí být přístupná z agenta kanálu. Možnosti:
pipeline
,filepath
. Výchozí: kanál.artifact: (Volitelné) Název artefaktu, který se má publikovat. Pokud není nastavená, nastaví se výchozí hodnota jedinečného ID vymezeného pro úlohu.
Zobrazení publikovaných artefaktů
Po dokončení spuštění kanálu zobrazte nebo stáhněte publikovaný artefakt podle těchto kroků:
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály, vyberte spuštění kanálu a pak vyberte kartu Souhrn .
V související části vyberte publikovaný artefakt.
Rozbalte složku drop a vyhledejte artefakt. Pak si můžete stáhnout artefakt a prozkoumat jeho obsah.
Často kladené dotazy
Otázka: Co jsou artefakty sestavení?
A: Artefakty sestavení jsou soubory vygenerované sestavením. Další informace o publikování a využívání artefaktů sestavení najdete v tématu Artefakty sestavení.
Otázka: Můžu odstranit artefakty kanálu při opětovném spuštění neúspěšných úloh?
A: Artefakty kanálu se nedají deletovat ani přepisovat. Pokud chcete znovu vygenerovat artefakty při opětovném spuštění neúspěšné úlohy, můžete do názvu artefaktu zahrnout ID úlohy. $(system.JobId)
je vhodná proměnná pro tento účel. Další informace o předdefinovaných proměnných najdete v tématu Systémové proměnné.
Otázka: Jak můžu získat přístup k informačním kanálům Artifacts za bránou firewall?
A: Pokud vaše organizace používá bránu firewall nebo proxy server, ujistěte se, že povolíte adresy URL a IP adresy domény Azure Artifacts.