İşlem hattı Yayımla ve indir Artifacts

Azure Pipelines

Azure Pipelines kullanarak, işlem hattınızda veya başka bir işlem hattınızdan daha önceki aşamalardan yapıtları indirebilirsiniz. Ayrıca yapıtı bir dosya paylaşımında yayımlayabilir veya bir işlem hattı yapıtı olarak kullanılabilir hale getirebilirsiniz.

Yapıtları Yayımla

YAML, klasik düzenleyici veya Azure CLı kullanarak yapılarınızı yayımlayabilirsiniz:

Not

Yayın işlem hatlarında yayımlama ardışık düzen yapıtları desteklenmez.

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

Not

publishAnahtar sözcüğü, publish için bir kısayoldur.

Yapıtın adı isteğe bağlı olsa da, yapıınızın içeriğini doğru bir şekilde yansıtan bir ad belirtmek iyi bir uygulamadır. Yapıtı farklı bir işletim sistemi üzerinde çalışan bir işten tüketmek istiyorsanı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 karşıdan yükleme başarısız olur.

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

Azure Artifacts paketler sabittir. Bir paket yayımladığınızda, sürümü kalıcı olarak ayrılmış olur. paket yayımlandığında başarısız olan işlerin yeniden çalıştırılması başarısız olur. Hatalı işleri bir hata paketiolmadan yeniden çalıştırmak istiyorsanız, bunu yaklaşımın iyi bir yolu, yalnızca önceki iş başarılı olursa çalıştırılacak Koşulları kullanmaktır.

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

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

Not

Artifacts işlem hattı depolamak için faturalandırılırsınız. ardışık düzen Önbelleğe Alma, depolama faturalandırmaya da muaf tutulur. Toplam faturalandırılmamış depolamama hangi yapıtların sayımda olduğunugörün.

Dikkat

işlem hattı çalıştırmasını silmek, bu çalıştırmasıyla ilişkili tüm Artifacts silinmesine neden olur.

Use. artifactignore

.artifactignore , .gitignore yapıtları yayımlarken hangi dosyaların dahil edilmeyeceğini belirtmek için sürüm denetimli bir yol sağlamak üzere, aynı File-glob söz dizimini (birkaç kısıtlamalarla) kullanır. Daha fazla bilgi için bkz .. artifactignore dosyasını kullanma .

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

**/*
!*.exe

Not

.artifactignore Bazı küçük sınırlamalara sahip .artifactignore ile aynı sözdizimini izler. Artı işareti karakteri, + URL yollarında ve Maven gibi bazı paket türlerinde derleme anlam sürümü meta verileri ( + sonek) için desteklenmez.

Yapıtları indir

YAML, klasik düzenleyici veya Azure CLı kullanarak yapıtları indirebilirsiniz.

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

İpucu

İşlem hattı kaynaklarını kullanarak kaynağınızı tek bir yerde tanımlayabilir ve işlem hattınızda herhangi bir yerde kullanabilirsiniz.

Not

downloadAnahtar sözcüğü, download görevi için bir kısayoldur.

Varsayılan olarak, dosyalar $ (Işlem hattı. Workspace)öğesine indirilir. Yapıt adı belirtilmemişse, indirilen her yapıt için bir alt dizin oluşturulur. Hangi dosyaların indirildiğ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

Artifacts seçimi

Tek bir indirme adımı, bir veya daha fazla yapıyı indirebilir. Birden çok yapıyı indirmek için yapıt adı alanını boş bırakın ve dosya eşleştirme desenlerini kullanarak hangi dosyaların indirileceğini sınırlandırın. ** , varsayılan dosya eşleştirme deseninin (tüm yapıtların tüm dosyaları).

Tek yapıt

Bir yapıt adı belirtildiğinde:

  1. Yalnızca söz konusu 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, model, *.jar yapıtın kökündeki bir uzantıya sahip tüm dosyalarla eşleşir .jar .

Aşağıdaki örnek, bir yapıtın nasıl indirileceğini göstermektedir *.jsWebApp :

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

Birden çok yapıt

Yapıt adı belirtilmedinde:

  1. Birden çok yapıt indirilebilir ve dosya bulunamasa 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ı (veya eşleşmesi) olduğunu varsaymalı. Örneğin, WebApp/** yapıttan tüm dosyaları WebApp eşler. Desen, */*.dll her yapının kökünde .dll bir uzantıya sahip olan tüm dosyaları eşler.

Aşağıdaki örnekte, tüm yapıtlardan tüm .zip dosyaların nasıl indirildikleri göstermektedir:

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

Artifacts ve dağıtım işlerinde yapılandırma

Artifacts dağıtım işlerinde yalnızca otomatik olarak indirilir. Yapıt indirme görevi, yalnızca dağıtımda yaşam döngüsü kancası deploy kullanırken otomatik olarak eklemeye devam eder. Yapıtların otomatik olarak indirildikten sonra bir adım download ekleyin ve değerini hiçbiri olarak ayarlayın. Normal bir derleme işte, step anahtar sözcüğünü veya İşlem Hattı Yapıtını download İndir görevini download Diğer kanca türleri hakkında daha fazla bilgi edinmek için bkz. yaşam döngüsü kancaları.

steps:
- download: none

Not

İşlem Hattı kayıt Artifacts veya üzerine yazma şu anda desteklenmiyor. Başarısız bir işlem hattı işini yeniden çalıştırmak için önerilen iş akışı, iş kimliğini yapıt adına eklemektir. $(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.

Farklı Artifacts kullanma

yapıtınıza işlem hattınızı farklı aşamalardan erişmek için çıkış değişkenlerini kullanarak YAML'nizin sonraki aşamasına geçebilirsiniz. Daha fazla ayrıntı için bkz. Bağımlılık ifadeleri.

trigger: none
pool:
  vmImage: 'ubuntu-latest'
stages:
- stage: A
  jobs:
  - job: A1
    steps:
     - script: echo ##vso[task.setvariable variable=shouldrun;isOutput=true]true
       name: printvar
- stage: B
  dependsOn: A
  jobs:
  - job: B1
    condition: in(stageDependencies.A.A1.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
    steps:
    - script: echo hello from Job B1
  - job: B2
    condition: eq(stageDependencies.A.A1.outputs['printvar.shouldrun'], 'true')
    steps:
     - script: echo hello from Job B2

Örnek

Aşağıdaki örnekte, bir betik klasörünü kopyalayıp bizim repomuzdan klasörüne yayımlayacak. $(Build.ArtifactStagingDirectory) İkinci aşamada betiğimizi indirip çalıştıracak.

PowerShell görev çıktısını gösteren ekran görüntüsü

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'

Derleme yapıtlarından geçiş

İşlem hattı yapıtları, derleme yapıtlarının yeni neslidir ve yapıtlarla çalışmak için önerilen yollardandır. Artifacts yayımlama görevi kullanılarak yayımlanan Artifacts Derlemeyi İndirme Artifacts yine de indirilebilir,ancak bunun yerine en son İşlem Hattı Yapıtlarını İndir görevinin kullanılması önerilir.

Derleme yapıtlarından işlem hattı yapıtları için kullanılırken:

  1. Derleme yapıtları için, dosyaları üzerine kopyalamak ve ardından Bu klasörü yayımlamak Artifacts yayımlamak için Derlemeyi Yayımla $(Build.ArtifactStagingDirectory) görevini kullanmak $(Build.ArtifactStagingDirectory) yaygındır. İşlem Hattı Yapıtlarını Yayımla göreviyle, doğrudan dosyaları içeren yoldan yayımlayın.

  2. Varsayılan olarak, İşlem Hattı Yapıtlarını İndir görevi dosyaları 'ye indirir. Bu, tüm yapıt türleri için varsayılan ve önerilen yoldur.

  3. Derlemeyi İndirme görevi için dosya eşleştirme Artifacts belirli bir yapıt belirtilmiş veya belirtilmemişse yapıt adıyla başlaması (veya eşleşmesi) beklenir. İşlem Hattı Yapıtlarını İndir görevsinde, bir yapıt adı zaten belirtilmişse desenler yapıt adını içermemeli. Daha fazla bilgi için bkz. tek yapıt seçimi.

SSS

S: Derleme yapıtları nedir?

A: Derleme yapıtları, derlemeniz tarafından oluşturulan dosyalardır. Derleme yapıtlarınızı Artifacts ve tüketme hakkında daha fazla bilgi edinmek için bkz. Derleme derlemeleri.

S: Bu görev, yapıtları paylaşılan bir klasöre yayımlar mı?

A: Şu anda değil, ancak bu özellik planlanmaktadır.