İş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:
Yalnızca ilgili yapıt için dosyalar indirilir. Yapıt yoksa görev başarısız olur.
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ı.jarolan 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:
Birden çok yapıt indirilebilir ve hiçbir dosya bulunamazsa görev başarısız olmaz.
Her yapıt için bir alt dizin oluşturulur.
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ştirirWebApp. Desen*/*.dll, her yapıtın kökünde bir.dlluzantı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'
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:
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.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.
Yayımla görevini ekleyin.
İndir görevini ekleyin.