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

Azure DevOps Services

Azure Pipelines'ı kullanarak yapıtları işlem hattınızın önceki aşamalarından veya başka bir işlem hattından 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

publish anahtar 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, karakterini \ içeren veya * Windows'a indirilemeyen bir dosya adı.

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 olan işler yeniden çalıştırılamaz. Başarısız işleri bir hata paketiyle karşı karşıya kalmadan yeniden çalıştırabilmek istiyorsanız buna yaklaşmanın iyi bir yolu, Koşullar'ı yalnızca önceki işin başarılı olması durumunda çalıştırmak için kullanmaktı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. Toplam faturalanan depolama alanımda hangi yapıtlar 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). Daha fazla ayrıntı için bkz. .artifactignore dosyasını kullanma .

Not

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

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

**/*
!*.exe

Önemli

Azure Artifacts, .artifactignore dosyanız olmadığında .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, seçeneği yalnızca yapıtları yayımlama görevleri olan işlere bağımlılığı olan ayrı işlerde kullanın current .

İpucu

Kaynağı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üğü, İşlem Hattı Yapıtını İndir görevi için bir kısayoldur.

Varsayılan olarak, dosyalar $(Pipeline.Workspace) öğesine indirilir. Bir 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 ilgili 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 , yapıtın kökünde uzantısı .jar olan tüm dosyaları 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) olduğunu varsaymalıdır. Ö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 indirilmesi 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 System.ArtifactsDirectoryindirilir. 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 indirilmeyi 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

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

Ö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örevinin dosya eşleştirme desenlerinin, belirli bir yapıtın 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.

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: Yapıtları paylaşılan bir klasörde yayımlamayı destekliyor musunuz?

Y: Şu anda değil, ancak bu özellik planlanıyor.

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ı deletable veya üzerine yazılabilir değildir. 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 amaç için uygun değişkendir. Önceden tanımlanmış değişkenler hakkında daha fazla bilgi edinmek için bkz . Sistem değişkenleri.