İş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ılmıştır. Paket yayımlandıysa başarısız işler yeniden çalıştırılamaz. 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ış projesi hem de yapıtı oluşturan işlem hattı için uygun izinlere sahip olduğunuzdan 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:
Yalnızca bu 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
tüm dosyaları yapıtın kökünde bir.jar
uzantıyla eşleştirir.
Aşağıdaki örnekte, bir yapıttan WebApp
tü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) varsayması gerekir. Örneğin,
WebApp/**
yapıttan tüm dosyaları eşleştirirWebApp
. 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'
Belirli bir yapıtı indirme
Aşağıdaki örnekte, belirli bir çalıştırma tarafından üretilen belirli bir derleme sürümünden işlem hattı yapıtlarının nasıl indirildiği gösterilmektedir:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
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'
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ö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.
Yayımlanan Yapıtları görüntüleme
İşlem hattı çalıştırmanız tamamlandıktan sonra, yayımlanan yapıtınızı görüntülemek veya indirmek için şu adımları izleyin:
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem hatları'nı seçin, işlem hattı çalıştırmanızı seçin ve ardından Özet sekmesini seçin.
İlgili bölümde yayımlanan yapıtı seçin.
Yapıtınızı bulmak için bırakma klasörünü genişletin. Ardından Yapıtınızı indirebilir ve içeriğini keşfedebilirsiniz.
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.