İşlem hattı yapıtlarını yayımlama ve indirme

Azure DevOps Services

Azure Pipelines'ı kullanarak işlem hattınızın önceki aşamalarından veya başka bir işlem hattından yapıtları indirebilirsiniz. Ayrıca yapıtınızı bir dosya paylaşımında yayımlayabilir veya işlem hattı yapıtı olarak kullanılabilir hale getirebilirsiniz.

Yapıtları yayımlama

Yapıtlarınızı YAML, klasik düzenleyici veya Azure CLI kullanarak yayımlayabilirsiniz:

Not

yayın işlem hatlarında işlem hattı yapıtlarının yayımlanması desteklenmez.

steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
  artifact: WebApp

Not

anahtar publish sözcüğü, İşlem Hattı Yapıtını Yayımla görevi için bir kısayoldur.

Yapıtın adı isteğe bağlı olsa da, yapıtınızın içeriğini doğru yansıtan bir ad belirtmek iyi bir uygulamadır. Yapıtı farklı bir işletim sisteminde çalışan bir işten tüketmeyi planlıyorsanız, tüm dosya yollarının hedef ortam için geçerli olduğundan emin olmanız gerekir. Örneğin, karakteri \ içeren bir dosya adı veya * Windows'a indirilemez.

Yayımlamak istediğiniz dosyanın/klasörün yolu gereklidir. Bu, için mutlak veya göreli bir yol $(System.DefaultWorkingDirectory)olabilir.

Azure Artifacts'teki paketler sabittir. Bir paketi yayımladıktan sonra sürümü kalıcı olarak ayrılır. Paket yayımlandıysa başarısız işleri yeniden çalıştırma işlemi başarısız olur. Bir hata paketiyle karşılaşılmadan başarısız işleri yeniden çalıştırabilmek istiyorsanız buna yaklaşmanın iyi bir yolu, Koşullar'ı kullanarak yalnızca önceki işin başarılı olması durumunda çalıştırmaktır.

  jobs:
  - job: Job1
    steps:
      - script: echo Hello Job1!

  - job: Job2
    steps:
      - script: echo Hello Job2!
    dependsOn: Job1

Not

İşlem Hattı Yapıtlarını depolamak için faturalandırılmazsınız. İşlem hattı Önbelleğe Alma depolama faturalamasından da muaftır. Bkz . Hangi yapıtlar toplam faturalanmış depolama alanıma doğru sayılır?

Dikkat

İşlem hattı çalıştırmasının silinmesi, bu çalıştırmayla ilişkili tüm Yapıtların silinmesine neden olur.

.artifactignore kullanma

.artifactignore , yapıtları yayımlarken hangi dosyaların yoksayılacağını belirtmek için benzer bir söz dizimi .gitignore kullanır (birkaç sınırlamayla). .artifactignore dosyasının, İşlem Hattı Yapıtlarını Yayımla görevinizin targetPath bağımsız değişkeni tarafından belirtilen dizinde bulunduğundan emin olun.

Not

Artı işareti karakteri + URL yollarında desteklenmez ve Maven gibi paket türleri için bazı derleme meta verileri.

Örnek: .exe dosyaları dışındaki tüm dosyaları yoksayın :

**/*
!*.exe

Önemli

.artifactignore dosyanız olmadığında Azure Artifacts .git klasör yolunu otomatik olarak yoksayar. Boş bir .artifactignore dosyası oluşturarak bunu atlayabilirsiniz.

Yapıtları indirme

YAPıtları YAML, klasik düzenleyici veya Azure CLI kullanarak indirebilirsiniz.

steps:
- download: current
  artifact: WebApp
  • current: Geçerli işlem hattı çalıştırması tarafından üretilen yapıtları indirin. Seçenekler: geçerli, belirli.

Not

Yayımlanan yapıtların listesi yalnızca aşağıdaki bağımlı işlerde kullanılabilir. Bu nedenle, yalnızca yayımlama yapıtları görevleri olan işlere bağımlılığı olan ayrı işlerde seçeneğini kullanın current .

İpucu

Kaynaklarınızı tek bir yerde tanımlamak ve işlem hattınızın herhangi bir yerinde kullanmak için İşlem hattı kaynaklarını kullanabilirsiniz.

Not

anahtar download sözcüğü yapıtları indirir. Daha fazla bilgi için bkz . steps.download.

Kuruluşunuzdaki farklı bir projeden işlem hattı yapıtını indirmek için hem aşağı akış projeniz hem de aşağı akış işlem hattınız için uygun izinlerin yapılandırıldığından emin olun. Varsayılan olarak, dosyalar $(Pipeline.Workspace) adresine indirilir. Yapıt adı belirtilmemişse, indirilen her yapıt için bir alt dizin oluşturulur. Hangi dosyaların indirilebileceğini sınırlamak için eşleşen desenleri kullanabilirsiniz. Daha fazla ayrıntı için bkz . Dosya eşleştirme desenleri .

steps:
- download: current
  artifact: WebApp
  patterns: |
    **/*.js
    **/*.zip

Yapıt seçimi

Tek bir indirme adımı bir veya daha fazla yapıtı indirebilir. Birden çok yapıt indirmek için yapıt adı alanını boş bırakın ve hangi dosyaların indirileceğini sınırlamak için dosya eşleştirme desenlerini kullanın. ** varsayılan dosya eşleştirme düzenidir (tüm yapıtlardaki tüm dosyalar).

Tek yapıt

Yapıt adı belirtildiğinde:

  1. Yalnızca bu yapıt için dosyalar indirilir. Yapıt yoksa görev başarısız olur.

  2. Dosya eşleştirme desenleri, yapıtın köküne göre değerlendirilir. Örneğin, desen *.jar tüm dosyaları yapıtın kökünde bir .jar uzantıyla eşleştirir.

Aşağıdaki örnekte, bir yapıttan WebApptümünün *.js nasıl indirilmesi gösterilmektedir:

steps:
- download: current
  artifact: WebApp
  patterns: '**/*.js'

Birden çok yapıt

Yapıt adı belirtilmediğinde:

  1. Birden çok yapıt indirilebilir ve hiçbir dosya bulunamazsa görev başarısız olmaz.

  2. Her yapıt için bir alt dizin oluşturulur.

  3. Dosya eşleştirme desenleri, desenin ilk kesiminin bir yapıt adı olduğunu (veya eşleşir) varsayması gerekir. Örneğin, WebApp/** yapıttan tüm dosyaları eşleştirir WebApp . Desen */*.dll , her yapıtın kökünde bir .dll uzantıya sahip tüm dosyaları eşleştirir.

Aşağıdaki örnekte tüm yapıtlardan tüm .zip dosyaların nasıl indirilme işlemi gösterilmektedir:

steps:
- download: current
  patterns: '**/*.zip'

Yayın ve dağıtım işlerindeki yapıtlar

Yapıtlar yalnızca dağıtım işlerinde otomatik olarak indirilir. Varsayılan olarak, yapıtlar öğesine $(Pipeline.Workspace)indirilir. yapıt indirme görevi yalnızca dağıtımınızda yaşam döngüsü kancası deploy kullanılırken otomatik olarak eklenecektir. Yapıtların otomatik olarak indirilmesini durdurmak için bir download adım ekleyin ve değerini yok olarak ayarlayın. Normal bir derleme işinde step anahtar sözcüğünü veya İşlem Hattı Yapıtını download İndir görevini açıkça kullanmanız gerekir. Diğer kanca türleri hakkında daha fazla bilgi edinmek için bkz. yaşam döngüsü kancaları.

steps:
- download: none

Aşamalar arasında Yapıtları kullanma

İşlem hattınızın farklı aşamalarında yapıtınıza erişebilmek istiyorsanız, artık yapıtınızı tek bir aşamada yayımlayabilir ve ardından bağımlılıkları kullanarak sonraki aşamada indirebilirsiniz. Daha fazla ayrıntı için bkz. Bağımlılıkları hazırlama aşaması.

Örnek

Aşağıdaki örnekte, depomuzdan $(Build.ArtifactStagingDirectory)öğesine bir betik klasörü kopyalayıp yayımlayacağız. İkinci aşamada betiğimizi indirip çalıştıracağız.

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'

Screenshot showing the PowerShell task output

Derleme yapıtlarından geçiş

İşlem hattı yapıtları yeni nesil derleme yapıtlarıdır ve yapıtlarla çalışmanın önerilen yoludur. Derleme Yapıtlarını Yayımla görevi kullanılarak yayımlanan yapıtlar, Derleme Yapıtlarını İndir kullanılarak indirilebiliyor ancak bunun yerine en son İşlem Hattı Yapıtını İndir görevini kullanmanızı öneririz.

Derleme yapıtlarından işlem hattı yapıtlarına geçiş yaparken:

  1. Varsayılan olarak, İşlem Hattı Yapıtını İndir görevi dosyaları adresine $(Pipeline.Workspace)indirir. Bu, tüm yapıt türleri için varsayılan ve önerilen yoldur.

  2. Yapıtları İndir görevi için dosya eşleştirme desenlerinin , belirli bir yapıt belirtilip belirtilmediğinden bağımsız olarak yapıt adıyla başlaması (veya eşleşmesi) beklenir. İşlem Hattı Yapıtını İndir görevinde, yapıt adı zaten belirtilmişse desenler yapıt adını içermemelidir. Daha fazla bilgi için bkz . Tek yapıt seçimi.

Örnek

- 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: (Gerekli) Yayımlayacak dosyanın veya dizinin yolu. Mutlak veya varsayılan çalışma dizinine göre olabilir. Değişkenleri içerebilir, ancak joker karakterler desteklenmez. Varsayılan: $(Pipeline.Workspace).

  • publishLocation: (Gerekli) Yapıtlar yayımlama konumu. Yapıtı Azure Pipelines'da depolamayı veya işlem hattı aracısından erişilebilir olması gereken bir dosya paylaşımına kopyalamayı seçin. Seçenekler: pipeline, filepath. Varsayılan: işlem hattı.

  • artifact: (İsteğe bağlı) Yayımlayacak yapıtın adı. Ayarlanmadıysa, varsayılan olarak işin kapsamı belirlenmiş benzersiz bir kimliktir.

SSS

S: Derleme yapıtları nedir?

Y: Derleme yapıtları, derlemeniz tarafından oluşturulan dosyalardır. Derleme yapıtlarınızı yayımlama ve kullanma hakkında daha fazla bilgi edinmek için bkz. Derleme Yapıtları.

S: Başarısız işleri yeniden çalıştırırken işlem hattı yapıtlarını silebilir miyim?

Y: İşlem hattı yapıtları değiştirilemez veya üzerine yazılamaz. Başarısız bir işi yeniden çalıştırdığınızda yapıtları yeniden oluşturmak istiyorsanız, yapıt adına iş kimliğini ekleyebilirsiniz. $(system.JobId) bu amaca uygun değişkendir. Önceden tanımlanmış değişkenler hakkında daha fazla bilgi edinmek için bkz. Sistem değişkenleri.

S: Bir güvenlik duvarının arkasındaki Yapıt akışlarına nasıl erişebilirim?

Y: Kuruluşunuz bir güvenlik duvarı veya ara sunucu kullanıyorsa Azure Artifacts Etki Alanı URL'lerine ve IP adreslerine izin verdiğinizden emin olun.