İş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:
Yalnızca söz konusu 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, model,
*.jaryapı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:
Birden çok yapıt indirilebilir ve dosya bulunamasa 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ı (veya eşleşmesi) olduğunu varsaymalı. Örneğin,
WebApp/**yapıttan tüm dosyalarıWebAppeşler. Desen,*/*.dllher yapının kökünde.dllbir 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.
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:
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.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.
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.
Yayımlama ardışık düzen yapıtı görevi.
hattı yapıtı görevini ekleyin.