Udostępnij za pośrednictwem


Publikowanie i pobieranie artefaktów kompilacji

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Uwaga

Zalecamy używanie funkcji Download Pipeline Artifacts i Publish Pipeline Artifacts w celu uzyskania szybszej wydajności.

Usługa Azure Artifacts umożliwia zespołom zarządzanie zależnościami przy użyciu kanałów informacyjnych i źródeł nadrzędnych. Usługa Azure Pipelines umożliwia publikowanie i pobieranie różnych typów artefaktów w ramach przepływu pracy ciągłej integracji/ciągłego wdrażania.

Publikowanie artefaktów

Artefakty można publikować na dowolnym etapie potoku. Aby opublikować pakiety, możesz użyć języka YAML lub klasycznego edytora usługi Azure DevOps.

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • pathToPublish: ścieżka artefaktu. Może to być ścieżka bezwzględna lub względna. Symbole wieloznaczne nie są obsługiwane.
  • artifactName: nazwa artefaktu.

Uwaga

Upewnij się, że podczas publikowania artefaktu nie używasz jednej z nazw zarezerwowanych folderów. Aby uzyskać więcej informacji, zobacz Foldery aplikacji.

Przykład: używanie wielu zadań

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • pathToPublish: ścieżka artefaktu. Może to być ścieżka bezwzględna lub względna. Symbole wieloznaczne nie są obsługiwane.
  • artifactName: nazwa artefaktu.

Przykład: kopiowanie i publikowanie plików binarnych

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • sourceFolder: folder zawierający pliki, które chcesz skopiować. Jeśli pozostawisz to puste, kopiowanie zostanie wykonane z pliku $(Build.SourcesDirectory).
  • zawartość: ścieżki do pliku do uwzględnienia w ramach kopii.
  • targetFolder: folder docelowy.
  • pathToPublish: ścieżka folderu lub pliku do opublikowania. Może to być ścieżka bezwzględna lub względna. Symbole wieloznaczne nie są obsługiwane.
  • artifactName: nazwa artefaktu, który chcesz utworzyć.

Uwaga

Pamiętaj, aby nie używać nazwy zarezerwowanej dla artifactName , takiej jak Bin lub App_Data. Aby uzyskać więcej informacji, zobacz ASP.NET Web Project Folder Structure (Struktura folderów projektu sieci Web).

Uwaga

Build.ArtifactStagingDirectory ścieżka jest czyszczona po każdej kompilacji. Jeśli używasz tej ścieżki do publikowania artefaktu, przed krokiem publikowania skopiuj zawartość, którą chcesz opublikować w tym katalogu.

Pobieranie artefaktów

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactsDirectory)'
  • buildType: określ, które artefakty kompilacji zostaną pobrane: current (wartość domyślna) lub z określonej kompilacji.
  • downloadType: wybierz, czy pobrać pojedynczy artefakt, czy wszystkie artefakty określonej kompilacji.
  • artifactName: nazwa artefaktu, który zostanie pobrany.
  • downloadPath: ścieżka na maszynie agenta, na której zostaną pobrane artefakty.

Uwaga

Jeśli używasz zadania wdrażania, możesz odwołać się do artefaktów kompilacji przy użyciu elementu $(Agent.BuildDirectory). Aby uzyskać więcej informacji, zobacz Zmienne agenta .

Po zakończeniu przebiegu potoku przejdź do pozycji Podsumowanie , aby eksplorować lub pobrać artefakt.

Opublikowany artefakt kompilacji

Pobieranie określonego artefaktu

steps:
- task: DownloadBuildArtifacts@1
  displayName: 'Download Build Artifacts'
  inputs:
    buildType: specific
    project: 'xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx'
    pipeline: 20
    buildVersionToDownload: specific
    buildId: 128
    artifactName: drop
    extractTars: false

Wskazówki

  • Wyłącz uwierzytelnianie podstawowe usług IIS, jeśli używasz usługi Azure DevOps Server, aby zezwolić na uwierzytelnianie przy użyciu osobistego tokenu dostępu. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie podstawowe usług IIS i usługi PAT .

  • Użyj ukośników w argumentach ścieżki pliku. Ukośniki odwrotne nie działają w agentach systemu macOS/Linux.

  • Artefakty kompilacji są przechowywane w systemie plików systemu Windows, co powoduje utratę wszystkich uprawnień systemu UNIX, w tym bit wykonywania. Po pobraniu artefaktów z usługi Azure Pipelines może być konieczne przywrócenie odpowiednich uprawnień systemu UNIX.

  • Build.ArtifactStagingDirectory i Build.StagingDirectory są zamienne.

  • Build.ArtifactStagingDirectory ścieżka jest czyszczona po każdej kompilacji.

  • Usunięcie kompilacji skojarzonej z pakietami opublikowanymi w udziale plików spowoduje usunięcie wszystkich artefaktów w tej ścieżce UNC.

  • Jeśli publikujesz pakiety w udziale plików, upewnij się, że masz dostęp do agenta kompilacji.

  • Upewnij się, że zezwalasz na adresy URL i adresy IP domeny usługi Azure Artifacts, jeśli twoja organizacja korzysta z zapory.