Azure Pipelines’da yapıtlarArtifacts in Azure Pipelines

Not

PublishBuildArtifacts@1 DownloadBuildArtifacts@0 PublishPipelineArtifact@1 DownloadPipelineArtifact@2 Daha hızlı çıkış depolama hızları için derleme yapıtlarından (ve) işlem hattı yapılarına (ve) yükseltmenizi öneririz.We recommend upgrading from build artifacts (PublishBuildArtifacts@1 and DownloadBuildArtifacts@0) to pipeline artifacts (PublishPipelineArtifact@1 and DownloadPipelineArtifact@2) for faster output storage speeds.

Azure Artifacts, takımların bağımlılıklarını yönetmek için akışları ve yukarı akış kaynaklarını kullanmasını sağlayan bir hizmettir.Azure Artifacts is a service that enables teams to use feeds and upstream sources to manage their dependencies. CI/CD iş akışınızın bir parçası olarak farklı türlerde yapıtları yayımlamak ve kullanmak için Azure Pipelines kullanabilirsiniz.You can use Azure Pipelines to publish and consume different types of artifacts as part of your CI/CD workflow.

Yapıtları Yayımla Nasıl yaparım??How do I publish artifacts?

Yapıtlar, işlem hattının herhangi bir aşamasında yayımlanabilir.Artifacts can be published at any stage of your pipeline. Paketlerinizi yayımlamak için YAML 'yi veya klasik Azure DevOps düzenleyicisini kullanabilirsiniz.You can use YAML or the classic Azure DevOps editor to publish your packages.

Metin dosyası yayımlamaPublish a text file

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

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • Pathtopublish: yapıtlarınızın yolu.pathToPublish: the path of your artifact. Bu mutlak veya göreli bir yol olabilir.This can be an absolute or a relative path. Joker karakterler desteklenmez.Wildcards are not supported.
  • artifactname: yapıtın adı.artifactName: the name of your artifact.

Not

Yapıtlarınızı yayımlarken ayrılmış Klasör adlarından birini kullandığınızdan emin olun.Make sure you are not using one of the reserved folder names when publishing your artifact. Daha fazla ayrıntı için bkz. Uygulama klasörleri .See Application Folders for more details.

YAML, TFS 'de desteklenmez.YAML is not supported in TFS.

İki yapıt kümesi yayımlayınPublish two sets of artifacts

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

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • Pathtopublish: yapıtlarınızın yolu.pathToPublish: the path of your artifact. Bu mutlak veya göreli bir yol olabilir.This can be an absolute or a relative path. Joker karakterler desteklenmez.Wildcards are not supported.
  • artifactname: yapıtın adı.artifactName: the name of your artifact.

YAML, TFS 'de desteklenmez.YAML is not supported in TFS.

Örnek: C++ yapılarını tek bir konumda birleştirin ve yapıt olarak yayımlayınExample: Assemble C++ artifacts into one location and publish as an artifact

- 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: kopyalamak istediğiniz dosyaları içeren klasör.sourceFolder: the folder that contains the files you want to copy. Bu değeri boş bırakırsanız, kopyalama işlemi deponuzdaki kök klasöründen ( $(Build.SourcesDirectory) ) yapılır.If you leave this value empty, copying will be done from the root folder of your repo ($(Build.SourcesDirectory)).
  • içerik: hedef klasöre kopyalanacak dosya (ler) in konumları.contents: location(s) of the file(s) that will be copied to the destination folder.
  • targetFolder: hedef klasör.targetFolder: destination folder.
  • pathtopublish: yayımlanacak klasör veya dosya yolu.pathToPublish: the folder or file path to publish. Mutlak veya göreli bir yol olabilir ve joker karakterler desteklenmez.It can be an absolute or a relative path, and wildcards are not supported.
  • artifactname: oluşturmak istediğiniz yapıtın adı.artifactName: the name of the artifact that you want to create.

Not

Bu içerik Web isteklerine yanıt olarak sunulmadığından, IIS tarafından bir yapıt adı olarak ayrılan bin, App_Data ve diğer klasör adlarını kullanamazsınız.You cannot use Bin, App_Data and other folder names reserved by IIS as an artifact name because this content is not served in response to Web requests. Daha fazla ayrıntı için lütfen bkz. ASP.NET Web proje klasörü yapısı .Please see ASP.NET Web Project Folder Structure for more details.

YAML, TFS 'de desteklenmez.YAML is not supported in TFS.

Yapıtları tüketmi Nasıl yaparım??How do I consume artifacts?

Yapılarınızı farklı yollarla kullanabilirsiniz: bunu yayın işlem hattınızda kullanabilir, işlem hattı işleriniz arasında geçirebilir, doğrudan işlem hattınızdan indirebilir, hatta akışlarınızdan ve yukarı akış kaynaklarından indirebilirsiniz.You can consume your artifacts in different ways: you can use it in your release pipeline, pass it between your pipeline jobs, download it directly from your pipeline and even download it from feeds and upstream sources.

Yayın işlem hatlarında yapıtları kullanmaConsume artifacts in release pipelines

Bir yayın işlem hattındaki derleme işlem hattı (klasik düzenleyicide oluşturulmuş) veya YAML ardışık düzeninde (bir YAML dosyası aracılığıyla oluşturulur) üretilen yapıtları indirebilir ve bunları istediğiniz hedefe dağıtın.You can download artifacts produced by either a build pipeline (created in a classic editor) or a YAML pipeline (created through a YAML file) in a release pipeline and deploy them to the target of your choice.

İşlem hattınızdaki bir sonraki işte bir yapıyı kullanınConsume an artifact in the next job of your pipeline

Bu iş, farklı bir aşamada (YAML işlem hatları) olsa bile, işlem hattının sonraki bir işinde bir iş tarafından üretilen yapıtı kullanabilirsiniz.You can consume an artifact produced by one job in a subsequent job of the pipeline, even when that job is in a different stage (YAML pipelines). Bu, yapıtı test etmek için yararlı olabilir.This can be useful to test your artifact.

Hata ayıklama için İndirDownload to debug

Hata ayıklama sırasında kullanmak üzere bir yapıtı doğrudan bir ardışık düzen aracılığıyla indirebilirsiniz.You can download an artifact directly from a pipeline for use in debugging.

- 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: hangi derleme yapıtlarının indirileceğini belirtin: current (varsayılan değer) veya belirli bir yapı.buildType: specify which build artifacts will be downloaded: current (the default value) or from a specific build.
  • Downloadtype: tek bir yapıt veya belirli bir yapının tüm yapıtlarının indirilip indirilmeyeceğini seçin.downloadType: choose whether to download a single artifact or all artifacts of a specific build.
  • artifactname: indirilecek yapıt adı.artifactName: the name of the artifact that will be downloaded.
  • downloadpath: yapıtların indirileceği aracı makinede yol.downloadPath: path on the agent machine where the artifacts will be downloaded.

YAML, TFS 'de desteklenmez.YAML is not supported in TFS.

Not

Bir deployment görevi kullanıyorsanız, değişken kullanarak yapı yapılarınıza başvurabilirsiniz $(Agent.BuildDirectory) .In case you are using a deployment task, you can then reference your build artifacts by using $(Agent.BuildDirectory) variable. Önceden tanımlanmış değişkenlerin nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Aracı değişkenleri .See Agent variables for more information on how to use predefined variables.

İpuçlarıTips

  • Yapıt yayımlama konumu bağımsız değişkeni: Azure Pipelines/TFS (TFS 2018 RTM ve daha eski: yapıt türü: sunucu) çoğu durumda en iyi ve en basit seçenektir.Artifact publish location argument: Azure Pipelines/TFS (TFS 2018 RTM and older: Artifact type: Server) is the best and simplest choice in most cases. Bu seçenek, yapıtların Azure Pipelines veya TFS 'de depolanmasına neden olur.This choice causes the artifacts to be stored in Azure Pipelines or TFS. Ancak özel bir Windows Aracısı kullanıyorsanız, BIR UNC dosya paylaşımında bırakmaseçeneğiniz vardır.But if you're using a private Windows agent, you've got the option to drop to a UNC file share.

  • Dosya yolu bağımsız değişkenlerinde tüm aracılarda çalışacak şekilde eğik çizgi kullanın.Use forward slashes in file path arguments so that they work for all agents. Ters eğik çizgiler macOS ve Linux aracıları için çalışmaz.Backslashes don't work for macOS and Linux agents.

  • Yapı yapıtları, yürütme biti dahil olmak üzere tüm UNIX izinlerinin kaybolmasına neden olan bir Windows FileSystem üzerinde depolanır.Build artifacts are stored on a Windows filesystem, which causes all UNIX permissions to be lost, including the execution bit. Azure Pipelines veya TFS 'den yapılarınızı indirdikten sonra doğru UNIX izinlerini geri yüklemeniz gerekebilir.You might need to restore the correct UNIX permissions after downloading your artifacts from Azure Pipelines or TFS.

  • Azure Pipelines ve bazı TFS sürümlerinde, iki farklı değişken hazırlama dizinine işaret edin: Build.ArtifactStagingDirectory ve Build.StagingDirectory .On Azure Pipelines and some versions of TFS, two different variables point to the staging directory: Build.ArtifactStagingDirectory and Build.StagingDirectory. Bunlar arasında değiştirilebilir.These are interchangeable.

  • Tarafından başvurulan Dizin Build.ArtifactStagingDirectory her derlemeden sonra temizlenir.The directory referenced by Build.ArtifactStagingDirectory is cleaned up after each build.

  • Yapıtları bir dosya paylaşımında yayımlayan bir derlemeyi silmek, bu UNC yolundaki tüm yapıtların silinmesine neden olur.Deleting a build that published Artifacts to a file share will result in the deletion of all Artifacts in that UNC path.

  • REST API yapı yapıtlarını alabilirsiniz.You can get build artifacts from the REST API.

Yapıtları yayımlamak için şu görevleri kullanın:Use these tasks to publish artifacts:

Yapılarınızı araştırma, indirme ve dağıtmaExplore, download, and deploy your artifacts

Oluşturma işlemi tamamlandığında, çalışma öğesini, Özet sekmesini seçin ve Yapı yapıtları yayımlanmış bölümünde yapınızı görüntüleyin.When the build is done, if you watched it run, select the Summary tab and see your artifact in the Build artifacts published section.

Yayımlanan derleme yapıtıPublished build artifact

Oluşturma işlemi tamamlandığında, çalışmayı, tamamlanmış yapının adını seçin ve yapıtlarınızı görmek için yapılar sekmesini seçin.When the build is done, if you watched it run, select the name of the completed build and then select the Artifacts tab to see your artifact.

Yayımlanan derleme yapıtıPublished build artifact TFS

Buradan yapıtları keşfedebilir veya indirebilirsiniz.From here, you can explore or download the artifacts.

Ayrıca, yayımladığınız yapıtları kullanarak uygulamanızı dağıtmak için Azure Pipelines de kullanabilirsiniz.You can also use Azure Pipelines to deploy your app by using the artifacts that you've published. Azure Pipelines sürümlerindeki yapıtlarıinceleyin.See Artifacts in Azure Pipelines releases.

TFS 'den bir UNC dosya paylaşımında yayımlamaPublish from TFS to a UNC file share

Özel bir Windows Aracısı kullanıyorsanız, dosyalarınızı bir UNC dosya paylaşımında yayımlamak için yapıt yayımlama konumu SEÇENEĞINI (TFS 2018 RTM ve daha eski: yapıt türü) ayarlayabilirsiniz.If you're using a private Windows agent, you can set the artifact publish location option (TFS 2018 RTM and older: artifact type) to publish your files to a UNC file share.

Not

Bir Windows yapı Aracısı kullanın.Use a Windows build agent. Bu seçenek, macOS ve Linux aracıları için çalışmaz.This option doesn't work for macOS and Linux agents.

Yapıtı bir dosya paylaşımında kopyalamak için dosya paylaşma ' yı seçin.Choose file share to copy the artifact to a file share. Bunu yapmak için yaygın nedenler:Common reasons to do this:

  • Bırakma boyutu büyük olur ve kopyalamak için çok fazla zaman ve bant genişliği kullanır.The size of your drop is large and consumes too much time and bandwidth to copy.

  • Yapıtlar için bazı özel betikleri veya diğer araçları çalıştırmanız gerekir.You need to run some custom scripts or other tools against the artifact.

Bir dosya paylaşma kullanıyorsanız, klasörün UNC dosya yolunu belirtin.If you use a file share, specify the UNC file path to the folder. Değişkenlerikullanarak her derleme için klasörün nasıl oluşturulduğunu denetleyebilirsiniz.You can control how the folder is created for each build by using variables. Örneğin: \\my\share\$(Build.DefinitionName)\$(Build.BuildNumber).For example: \\my\share\$(Build.DefinitionName)\$(Build.BuildNumber).

TFS 2015 RTM 'den yapıtları yayımlamaPublish artifacts from TFS 2015 RTM

TFS 2015 RTM kullanıyorsanız, Yukarıdaki örneklerde bulunan adımlar kullanılamaz.If you're using TFS 2015 RTM, the steps in the preceding examples are not available. Bunun yerine, yapılarınızı tek bir görev kullanarak kopyalayıp yayımlayabilirsiniz: Derleme: derleme yapıtlarını Yayımla.Instead, you copy and publish your artifacts by using a single task: Build: Publish Build Artifacts.