Publikowanie i pobieranie artefaktów potoku
Azure DevOps Services
Za pomocą usługi Azure Pipelines można pobierać artefakty z wcześniejszych etapów potoku lub z innego potoku. Możesz również opublikować artefakt w udziale plików lub udostępnić go jako artefakt potoku.
Publikowanie artefaktów
Artefakty można publikować przy użyciu języka YAML, edytora klasycznego lub interfejsu wiersza polecenia platformy Azure:
Uwaga
Publikowanie artefaktów potoku nie jest obsługiwane w potokach wydania.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Uwaga
Słowo publish
kluczowe to skrót do zadania Publikowanie artefaktu potoku.
Chociaż nazwa artefaktu jest opcjonalna, dobrym rozwiązaniem jest określenie nazwy, która dokładnie odzwierciedla zawartość artefaktu. Jeśli planujesz używać artefaktu z zadania uruchomionego w innym systemie operacyjnym, upewnij się, że wszystkie ścieżki plików są prawidłowe dla środowiska docelowego. Na przykład nazwa pliku zawierająca znak \
lub *
nie będzie można pobrać go w systemie Windows.
Ścieżka pliku/folderu, który chcesz opublikować, jest wymagana. Może to być bezwzględna lub względna ścieżka do $(System.DefaultWorkingDirectory)
.
Pakiety w usłudze Azure Artifacts są niezmienne. Po opublikowaniu pakietu jego wersja jest trwale zarezerwowana. Ponowne uruchamianie nieudanych zadań zakończy się niepowodzeniem, jeśli pakiet został opublikowany. Dobrym sposobem podejścia do tego, jeśli chcesz mieć możliwość ponownego uruchamiania zadań zakończonych niepowodzeniem bez wystąpienia pakietu błędów , jest użycie warunków do uruchomienia tylko wtedy, gdy poprzednie zadanie zakończyło się pomyślnie.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Uwaga
Nie będą naliczane opłaty za przechowywanie artefaktów potoku. Buforowanie potoku jest również wykluczone z rozliczeń magazynu. Zobacz , które artefakty są liczone w stosunku do mojego łącznego rozliczanego magazynu.
Uwaga
Usunięcie przebiegu potoku spowoduje usunięcie wszystkich artefaktów skojarzonych z tym uruchomieniem.
Korzystanie z elementu artifactignore
.artifactignore
Używa podobnej składni do .gitignore
(z kilkoma ograniczeniami), aby określić, które pliki powinny być ignorowane podczas publikowania artefaktów. Upewnij się, że plik artifactignore znajduje się w katalogu określonym przez argument targetPath zadania Publish Pipeline Artifacts.
Uwaga
Znak +
plus nie jest obsługiwany w ścieżkach adresu URL i niektóre metadane kompilacji dla typów pakietów, takich jak Maven.
Przykład: ignoruj wszystkie pliki z wyjątkiem plików .exe :
**/*
!*.exe
Ważne
Usługa Azure Artifacts automatycznie ignoruje ścieżkę folderu .git , gdy nie masz pliku artifactignore . Można to obejść, tworząc pusty plik artifactignore .
Pobieranie artefaktów
Artefakty można pobrać przy użyciu języka YAML, edytora klasycznego lub interfejsu wiersza polecenia platformy Azure.
steps:
- download: current
artifact: WebApp
- current: pobieranie artefaktów utworzonych przez bieżące uruchomienie potoku. Opcje: bieżące, specyficzne.
Uwaga
Lista opublikowanych artefaktów będzie dostępna tylko w następujących zadaniach zależnych. W związku z tym należy używać current
opcji tylko w osobnych zadaniach, które mają zależność od zadań z zadaniami publikowania artefaktów.
Napiwek
Za pomocą zasobów potoku można zdefiniować źródło w jednym miejscu i używać go w dowolnym miejscu w potoku.
Uwaga
Słowo download
kluczowe pobiera artefakty. Aby uzyskać więcej informacji, zobacz steps.download.
Aby pobrać artefakt potoku z innego projektu w organizacji, upewnij się, że masz odpowiednie uprawnienia skonfigurowane zarówno dla projektu podrzędnego, jak i potoku generującego artefakt. Domyślnie pliki są pobierane do pliku $(Pipeline.Workspace). Jeśli nie określono nazwy artefaktu, dla każdego pobranego artefaktu zostanie utworzony podkatalog. Możesz użyć pasujących wzorców, aby ograniczyć pobieranie plików. Aby uzyskać więcej szczegółów, zobacz Wzorce dopasowywania plików.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Wybór artefaktów
Jeden krok pobierania może pobrać co najmniej jeden artefakt. Aby pobrać wiele artefaktów, pozostaw puste pole nazwy artefaktu i użyj wzorców dopasowywania plików, aby ograniczyć pobieranie plików. **
jest domyślnym wzorcem dopasowywania plików (wszystkie pliki we wszystkich artefaktach).
Pojedynczy artefakt
Po określeniu nazwy artefaktu:
Pobierane są tylko pliki dla tego konkretnego artefaktu. Jeśli artefakt nie istnieje, zadanie zakończy się niepowodzeniem.
Wzorce dopasowywania plików są oceniane względem katalogu głównego artefaktu. Na przykład wzorzec
*.jar
pasuje do wszystkich plików z.jar
rozszerzeniem w katalogu głównym artefaktu.
Poniższy przykład ilustruje sposób pobierania wszystkich *.js
z artefaktu WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Wiele artefaktów
Jeśli nie określono nazwy artefaktu:
Można pobrać wiele artefaktów, a zadanie nie kończy się niepowodzeniem, jeśli nie znaleziono żadnych plików.
Dla każdego artefaktu jest tworzony podkatalog.
Wzorce dopasowywania plików powinny zakładać, że pierwszy segment wzorca to (lub pasuje) nazwa artefaktu. Na przykład
WebApp/**
pasuje do wszystkich plików z artefaktuWebApp
. Wzorzec*/*.dll
pasuje do wszystkich plików z.dll
rozszerzeniem w katalogu głównym każdego artefaktu.
W poniższym przykładzie pokazano, jak pobrać wszystkie .zip
pliki ze wszystkich artefaktów:
steps:
- download: current
patterns: '**/*.zip'
Pobieranie określonego artefaktu
W poniższym przykładzie pokazano, jak pobrać artefakty potoku z określonej wersji kompilacji wygenerowanej przez określony przebieg:
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 w zadaniach wydania i wdrażania
Artefakty są pobierane automatycznie tylko w zadaniach wdrażania. Domyślnie artefakty są pobierane do $(Pipeline.Workspace)
programu . Zadanie artefaktu pobierania zostanie automatycznie wprowadzone tylko w przypadku korzystania z elementu zaczepienia cyklu życia we wdrożeniu deploy
. Aby zatrzymać automatyczne pobieranie artefaktów, dodaj download
krok i ustaw jego wartość na wartość none.
W zwykłym zadaniu kompilacji należy jawnie użyć słowa kluczowego download
krok lub zadania Pobierz artefakt potoku . Zobacz punkt zaczepienia cyklu życia, aby dowiedzieć się więcej o innych typach punktów zaczepienia.
steps:
- download: none
Używanie artefaktów między etapami
Jeśli chcesz mieć dostęp do artefaktu na różnych etapach w swoim potoku, teraz możesz opublikować swój artefakt na jednym etapie, a następnie pobrać go na następnym etapie przy użyciu zależności. Aby uzyskać więcej informacji, zobacz Zależności między etapami.
Przykład
W poniższym przykładzie skopiujemy i opublikujemy folder skryptu z repozytorium do folderu $(Build.ArtifactStagingDirectory)
. W drugim etapie pobierzemy i uruchomimy nasz skrypt.
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'
Migrowanie z artefaktów kompilacji
Artefakty potoku to następna generacja artefaktów kompilacji i są zalecanym sposobem pracy z artefaktami. Artefakty opublikowane przy użyciu zadania Publikuj artefakty kompilacji nadal można pobrać przy użyciu polecenia Pobierz artefakty kompilacji, ale zalecamy użycie najnowszego zadania Artefakt potoku pobierania.
Podczas migracji z artefaktów kompilacji do artefaktów potoku:
Domyślnie zadanie Pobierz artefakt potoku pobiera pliki do
$(Pipeline.Workspace)
programu . Jest to domyślna i zalecana ścieżka dla wszystkich typów artefaktów.Wzorce dopasowywania plików dla zadania Pobierz artefakty kompilacji powinny rozpoczynać się od (lub dopasować) nazwę artefaktu, niezależnie od tego, czy określony artefakt został określony, czy nie. W zadaniu Pobieranie artefaktu potoku wzorce nie powinny zawierać nazwy artefaktu, gdy nazwa artefaktu została już określona. Aby uzyskać więcej informacji, zobacz wybór pojedynczego artefaktu.
Przykład
- 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: (Wymagane) Ścieżka pliku lub katalogu do opublikowania. Może być bezwzględny lub względny względem domyślnego katalogu roboczego. Może zawierać zmienne, ale symbole wieloznaczne nie są obsługiwane. Wartość domyślna: $(Pipeline.Workspace).
publishLocation: (Wymagane) Lokalizacje publikowania artefaktów. Wybierz, czy artefakt ma być przechowywany w usłudze Azure Pipelines, czy skopiować go do udziału plików, który musi być dostępny z agenta potoku. Opcje:
pipeline
,filepath
. Ustawienie domyślne: potok.artifact: (Opcjonalnie) Nazwa artefaktu do opublikowania. Jeśli nie zostanie ustawiona, wartość domyślna to unikatowy identyfikator o określonym zakresie zadania.
Wyświetlanie opublikowanych artefaktów
Po zakończeniu przebiegu potoku wykonaj następujące kroki, aby wyświetlić lub pobrać opublikowany artefakt:
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Potoki, wybierz przebieg potoku, a następnie wybierz kartę Podsumowanie .
W powiązanej sekcji wybierz opublikowany artefakt.
Rozwiń folder drop, aby zlokalizować artefakt. Następnie możesz pobrać artefakt i eksplorować jego zawartość.
Często zadawane pytania
.: Co to są artefakty kompilacji?
1: Artefakty kompilacji to pliki generowane przez kompilację. Zobacz Build Artifacts (Tworzenie artefaktów ), aby dowiedzieć się więcej na temat publikowania artefaktów kompilacji i korzystania z nich.
.: Czy mogę usunąć artefakty potoku po ponownym uruchomieniu zadań, które zakończyły się niepowodzeniem?
1: Artefakty potoku nie można usuwać ani zastępować. Jeśli chcesz ponownie wygenerować artefakty po ponownym uruchomieniu zadania, które zakończyło się niepowodzeniem, możesz uwzględnić identyfikator zadania w nazwie artefaktu. $(system.JobId)
jest odpowiednią zmienną w tym celu. Zobacz Zmienne systemowe, aby dowiedzieć się więcej o wstępnie zdefiniowanych zmiennych.
.: Jak mogę uzyskać dostęp do kanałów informacyjnych Artifacts za zaporą?
Odpowiedź: Jeśli organizacja korzysta z zapory lub serwera proxy, upewnij się, że zezwalasz na adresy URL i adresy IP domeny usługi Azure Artifacts.