Udostępnij przez


Publikowanie i pobieranie artefaktów kompilacji

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

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@1
  inputs:
    buildType: 'current'        # Options: 'current' | 'specific'. Specify which build artifacts will be downloaded: `current` or from a specific build
    downloadType: 'single'      # Options: 'single' | 'specific'. Choose whether to download a single artifact or all artifacts of a specific build.
    artifactName: 'drop'        # Required when downloadType == single. The name of the artifact that will be downloaded.
    downloadPath: '$(System.ArtifactsDirectory)'    # Path on the agent machine where the artifacts will be downloaded. Default: $(System.ArtifactsDirectory).

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                        # Options: 'current' | 'specific'. Specify which build artifacts will be downloaded: `current` or from a specific build
    project: 'xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx'    # Required when buildType == specific. Project ID.
    pipeline: 20                                   # Required when buildType == specific. Build pipeline.
    buildVersionToDownload: specific    # Options: 'latest' | 'latestFromBranch' | 'specific'. Required when buildType == specific. Build version to download.
    buildId: 128                        # Required when buildType == specific && buildVersionToDownload == specific. Build ID.
    artifactName: drop                  # The name of the artifact that will be downloaded.
    extractTars: false                  # boolean. Extract all files that are stored inside tar archives.

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 Dlaczego mój pat przestał działać?.

  • 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.