Publikowanie i pobieranie artefaktów potoku
Usługa 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ącego znak \ lub * nie będzie można pobrać jej w systemie Windows.
Wymagana jest ścieżka pliku/folderu, który chcesz opublikować. 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 zostanie 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ą zliczane do mojego łącznego rozliczonego magazynu.
Przestroga
Usunięcie uruchomienia 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 mają być ignorowane podczas publikowania artefaktów. Aby uzyskać więcej informacji, zobacz Use the .artifactignore file (Korzystanie z pliku artifactignore ).
Uwaga
Znak + plus nie jest obsługiwany w ścieżkach 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 generowanych 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 oddzielnych zadaniach, które mają zależność od zadań z zadaniami publikowania artefaktów.
Porada
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 to skrót do zadania Pobierz artefakt potoku .
Domyślnie pliki są pobierane do elementu $(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 informacji, zobacz Wzorce dopasowywania plików .
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Wybór artefaktów
Jeden krok pobierania może pobrać jeden lub więcej artefaktów. Aby pobrać wiele artefaktów, pozostaw puste pole nazwy artefaktu i użyj wzorców dopasowywania plików, aby ograniczyć pobieranie plików. ** to domyślny wzorzec 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
*.jarpasuje do wszystkich plików z.jarrozszerzeniem 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.
Podkatalog jest tworzony dla każdego artefaktu.
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*/*.dllpasuje do wszystkich plików z.dllrozszerzeniem 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'
Artefakty w zadaniach wydania i wdrażania
Artefakty są pobierane automatycznie tylko w zadaniach wdrażania. Domyślnie artefakty są pobierane do System.ArtifactsDirectory. Zadanie artefaktu pobierania zostanie automatycznie wstrzyknięte tylko w przypadku korzystania z zaczepienia cyklu życia we wdrożeniu deploy . Aby zatrzymać pobieranie artefaktów automatycznie, dodaj download krok i ustaw jej wartość na none.
W zwykłym zadaniu kompilacji należy jawnie użyć słowa kluczowego download krok lub zadania Pobierz artefakt potoku . Zobacz punkty zaczepienia cyklu życia , aby dowiedzieć się więcej o innych typach haków.
steps:
- download: none
Używanie artefaktów na różnych etapach
Jeśli chcesz mieć dostęp do artefaktu na różnych etapach potoku, możesz teraz opublikować 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 Etap do etapu zależności .
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 są następną generacją 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 funkcji Pobierz artefakty kompilacji, ale zalecamy użycie najnowszego zadania Pobierz artefakt potoku .
Podczas migracji z artefaktów kompilacji do artefaktów potoku:
Domyślnie zadanie Pobierz artefakt potoku pobiera pliki do
$(Pipeline.Workspace)pliku . 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 nazwy artefaktu (lub dopasowania), niezależnie od tego, czy określony artefakt został określony, czy nie. W zadaniu Pobierz artefakt 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.
Często zadawane pytania
Pyt.: Co to są artefakty kompilacji?
1: Artefakty kompilacji to pliki generowane przez kompilację. Zobacz Build Artifacts (Artefakty kompilacji), aby dowiedzieć się więcej na temat publikowania artefaktów kompilacji i korzystania z nich.
Pyt.: Czy obsługujesz publikowanie artefaktów w folderze udostępnionym?
1: Nie obecnie, ale ta funkcja jest planowana.
Pyt.: Czy mogę usunąć artefakty potoku podczas ponownego uruchamiania 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 dołączyć identyfikator zadania w nazwie artefaktu. $(system.JobId) jest odpowiednią zmienną do tego celu. Zobacz Zmienne systemowe , aby dowiedzieć się więcej o wstępnie zdefiniowanych zmiennych.
potoku).
Dodaj zadanie Pobierz artefakt potoku.