Görev türleri & kullanımı
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Not
Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.
Görev , bir işlem hattında Otomasyon tanımlamak için yapı taşıdır. Bir görev, bir giriş kümesiyle soyutlaneklenen paketlenmiş bir betiktir veya yordamdır.
İşlem hattınızı bir görev eklediğinizde, işlem hattına bir talep kümesi de ekleyebilir. Talepler, görevi çalıştırmak için aracıya yüklenmesi gereken önkoşulları tanımlar. Derlemeyi veya dağıtımı çalıştırdığınızda, bu talepleri karşılayan bir aracı seçilir.
Bir işçalıştırdığınızda, diğer tüm görevler sırayla çalıştırılır. Aynı görev kümesini birden çok aracıda paralel olarak çalıştırmak veya bir aracı kullanmadan bazı görevleri çalıştırmak için bkz. işler.
Varsayılan olarak, tüm görevler konak üzerinde mi yoksa bir iş kapsayıcısıiçinde olsun, aynı bağlamda çalışır. İsteğe bağlı olarak, tek bir görevin bağlamını denetlemek için adım hedeflerini kullanabilirsiniz.
YAML şemasıile bir görevin özelliklerini belirtme hakkında daha fazla bilgi edinin.
Bir işçalıştırdığınızda, tüm görevler, bir aracıda diğeri bir sırayla çalıştırılır. Aynı görev kümesini birden çok aracıda paralel olarak çalıştırmak veya bir aracı kullanmadan bazı görevleri çalıştırmak için bkz. işler.
Özel görevler
Temel derleme ve dağıtım senaryolarını etkinleştirmek için bazı yerleşik görevler sağlıyoruz. Kendi özel görevinizi oluşturmakiçin de kılavuzluk sunuyoruz.
ayrıca, Visual Studio market , her biri abonelik veya koleksiyona yüklendiğinde, görev kataloğunu bir veya daha fazla görevle genişleten bir dizi uzantı sunar. ayrıca, Azure Pipelines veya TFS 'ye görev eklemek için kendi özel uzantılarınızı yazabilirsiniz.
YAML işlem hatları 'nda görevlere adına göre başvurursunuz. Bir ad hem yerleşik bir görevle hem de özel bir görevle eşleşiyorsa, yerleşik görev öncelikli olur. Bu riski önlemek için, özel görev için görev GUID 'sini veya tam nitelikli bir adı kullanabilirsiniz:
steps:
- task: myPublisherId.myExtensionId.myContributionId.myTaskName@1 #format example
- task: qetza.replacetokens.replacetokens-task.replacetokens@3 #working example
myPublisherIdVe myExtensionId ' yi bulmak için Market 'teki bir görevi myPublisherId ' ı seçin. itemNameURL dizinizdeki öğesinden sonraki değerler myPublisherId ve myExtensionId . Ayrıca, görevi bir yayın ardışık düzenine ekleyerek ve görevi düzenlenirken YAML görüntüle ' ye tıklayarak tam nitelikli adı bulabilirsiniz.
Görev sürümleri
Görevler sürümlüdür ve işlem hattınızda kullanılan görevin ana sürümünü belirtmeniz gerekir. Bu, bir görevin yeni sürümleri serbest bırakıldığında sorunları önlemeye yardımcı olabilir. Görevler genellikle geriye dönük olarak uyumludur, ancak bazı senaryolarda bir görev otomatik olarak güncelleniyorsa öngörülemeyen hatalarla karşılaşabilirsiniz.
Yeni bir ikincil sürüm yayınlanmışsa (örneğin, 1,2 ile 1,3 arasında), derleme veya sürüm otomatik olarak yeni sürümü kullanacaktır. Ancak, yeni bir ana sürüm yayınlanmışsa (örneğin 2,0), derleme veya sürüm, işlem hattını düzenleyip ve yeni ana sürüme el ile değişene kadar belirttiğiniz ana sürümü kullanmaya devam eder. Derleme veya yayın günlüğü, yeni bir ana sürümün kullanılabilir olduğunu belirten bir uyarı içerecektir.
İşaretinden sonra bir görevin tam sürüm numarasını belirterek hangi ikincil sürümün kullanılacağını ayarlayabilirsiniz @ (örnek: GoTool@0.3.1 ). Yalnızca Kuruluşunuziçin mevcut olan görev sürümlerini kullanabilirsiniz.
YAML 'de, görev adında ana sürümü belirtirsiniz @ .
Örneğin, görevin 2. sürümüne sabitlemek için PublishTestResults :
steps:
- task: PublishTestResults@2
YAML işlem hatları TFS 'de kullanılamaz.
Görev denetimi seçenekleri
Her görev size bazı Denetim seçeneklerisunar.
Denetim seçenekleri, bölümünde anahtarlar olarak kullanılabilir task .
- task: string # reference to a task and version, e.g. "VSBuild@1"
condition: expression # see below
continueOnError: boolean # 'true' if future steps should run even if this step fails; defaults to 'false'
enabled: boolean # whether or not to run this step; defaults to 'true'
timeoutInMinutes: number # how long to wait before timing out the task
Denetim seçenekleri, bölümünde anahtarlar olarak kullanılabilir task .
- task: string # reference to a task and version, e.g. "VSBuild@1"
condition: expression # see below
continueOnError: boolean # 'true' if future steps should run even if this step fails; defaults to 'false'
enabled: boolean # whether or not to run this step; defaults to 'true'
timeoutInMinutes: number # how long to wait before timing out the task
target: string # 'host' or the name of a container resource to target
Denetim seçenekleri, bölümünde anahtarlar olarak kullanılabilir task .
- task: string # reference to a task and version, e.g. "VSBuild@1"
condition: expression # see below
continueOnError: boolean # 'true' if future steps should run even if this step fails; defaults to 'false'
enabled: boolean # whether or not to run this step; defaults to 'true'
retryCountOnTaskFailure: number # Max number of retries; default is zero
timeoutInMinutes: number # how long to wait before timing out the task
target: string # 'host' or the name of a container resource to target
Not
Belirli bir görev veya iş tek taraflı iş/aşamanın devam edip etmediğini meyeceğine karar vermez. Ne yapabilecekleri, başarılı veya başarısızdurumuna sahip olmak ve aşağı akış görevlerinin/işlerin her birinin çalıştırılıp çalıştırılmayacağına karar vermesine izin veren bir koşul hesaplaması vardır. Etkin durumda olan varsayılan koşul "başarılı durumumuz" çalışır ".
Hatada devam et , bunu hafif bir şekilde değiştirir. Tüm aşağı akış adımları/işleri, bu kararı verme amacıyla herhangi bir sonucu "başarılı" olarak davranmak için etkili bir şekilde "püf". Ya da bunu başka bir şekilde yerleştirmek için, "kapsayan yapının koşulu hakkında bir karar verirken bu görevin başarısızlığını göz önünde bulundurun" diyor.
Zaman aşımı süresi, görev çalışmaya başladığında başlar. Görevin kuyruğa alındığı veya bir aracıyı beklediği zaman dahil değildir.
Bu YAML 'de, PublishTestResults@2PublishTestResults@2nedeniyle önceki adım başarısız olsa bile çalışır.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.7'
architecture: 'x64'
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/TEST-*.xml"
condition: succeededOrFailed()
Not
Tam şema için bkz. YAML şeması .
Koşullar
Yalnızca aynı aracı havuzuna sahip tüm önceki bağımlılıklar başarılı olduğunda. Farklı aracı havuzlarınız varsa, bu aşamalar veya işler eşzamanlı olarak çalışır. YAML 'de bir koşul ayarlanmamışsa bu varsayılandır.
Önceki bağımlılık başarısız olsa bile, çalıştırma iptal edilmediği takdirde.
succeededOrFailed()Bu koşul IÇIN YAML 'de kullanın.Önceki bağımlılık başarısız olsa bile, çalıştırma iptal edilse bile.
always()Bu koşul IÇIN YAML 'de kullanın.Yalnızca önceki bir bağımlılık başarısız olduğunda.
failed()Bu koşul IÇIN YAML 'de kullanın.
- Deyimlerden oluşan özel koşullar
Adım hedefi
Görevler, aracı Konağı ya da kapsayıcı olan bir yürütme bağlamında çalışır.
Tek bir adım bir belirterek bağlamını geçersiz kılabilir target .
Kullanılabilir seçenekler, aracı konağını hedefleyecek sözcüktir ve işlem hattında host tanımlanan kapsayıcılardır.
Örnek:
resources:
containers:
- container: pycontainer
image: python:3.8
steps:
- task: SampleTask@1
target: host
- task: AnotherTask@1
target: pycontainer
Burada, SampleTask konakta çalışır ve AnotherTask bir kapsayıcıda çalışır.
Görev başarısız olursa yeniden deneme sayısı
retryCountOnTaskFailureGörev başarısız olursa yeniden deneme sayısını belirtmek için kullanın. Varsayılan değer sıfırdır.
- task: <name of task>
retryCountOnTaskFailure: <max number of retries>
...
Not
- Başarısız olan görev hemen yeniden denenir.
- Görevin en yükselişi hakkında bir varsayım yoktur. Görevin yan etkileri varsa (örneğin, bir dış kaynağı kısmen oluşturduysanız), ikinci kez çalıştırıldığında başarısız olabilir.
- Görevin kullanılabilir hale getirilme sayısı hakkında bilgi yok.
- Görev günlüklerine, yeniden denenmeye başlamadan önce başarısız olduğunu belirten bir uyarı eklenir.
- Bir görevi yeniden deneme girişimleri, Kullanıcı arabiriminde aynı görev düğümünün bir parçası olarak gösterilir.
YAML işlem hatları TFS 'de kullanılamaz.
Ortam değişkenleri
YAML işlem hatları, 2019 ve Azure DevOps Server için de destek sağlar.
Her görevin, env görev sürecine eşlenen ortam değişkenlerini temsil eden dize çiftlerinin listesi olan bir özelliği vardır.
task: AzureCLI@2
displayName: Azure CLI
inputs: # Specific to each task
env:
ENV_VARIABLE_NAME: value
ENV_VARIABLE_NAME2: value
...
Aşağıdaki örnek, Komut satırı görevi için kısayol olan adımı ve ardından eşdeğer script görev söz scriptdizimini çalıştırır. Bu örnek, cli ile kimlik AZURE_DEVOPS_EXT_PAT doğrulama için kullanılan ortam değişkenine bir Azure DevOps atar.
# Using the script shortcut syntax
- script: az pipelines variable-group list --output table
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: 'List variable groups using the script step'
# Using the task syntax
- task: CmdLine@2
inputs:
script: az pipelines variable-group list --output table
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: 'List variable groups using the command line task'
Derleme aracı yükleyicileri (Azure Pipelines)
Araç yükleyicileri derleme işlem hattınızı bağımlılıklarınızı yükp denetlemeye olanak sağlar. Özellikle:
CI derlemeniz için hemen zamanında bir araç veya çalışma zamanı yükleyin (Microsofttarafından barındırılan aracılarda bile).
Uygulama veya kitaplığınızı bağımlılık gibi birden çok sürüme karşı Node.js.
Örneğin, derleme işlem hattınızı, uygulamanın birden çok sürümü için çalıştırmak ve doğrulamak için Node.js.
Örnek: Uygulamalarınızı birden çok sürümde test edin ve Node.js
Projenizin temel dizininde aşağıdaki içeriklerle bir azure-pipelines.yml dosyası oluşturun.
pool:
vmImage: 'Ubuntu 16.04'
steps:
# Node install
- task: NodeTool@0
displayName: Node install
inputs:
versionSpec: '6.x' # The version we're installing
# Write the installed version to the command line
- script: which node
Yeni bir derleme işlem hattı oluşturun ve çalıştırın. Derlemenin nasıl çalıştırı olduğunu gözlemlemek. Node.js Aracı Yükleyicisi, Node.js aracıda yoksa bu sürümü indirir. Komut Satırı betiği, diskte Node.js konumunu günlüğe kaydeder.
YAML işlem hatları TFS'de kullanılamaz.
Araç yükleyicisi görevleri
Araç yükleyicisi görevlerimizin listesi için bkz. Araç yükleyicisi görevleri.
Kutu içinde ve Market görevlerini devre dışı bırakma
Kuruluş ayarları sayfasında Market görevlerini, kutu içinde görevleri veya her ikisini de devre dışı abilirsiniz.
Market görevlerini devre dışı bırakmak, işlem hatlarının güvenliğini artırmaya yardımcı olabilir.
Hem kutu içinde hem de Market görevlerini devre dışı bıraksanız, yalnızca kullanarak tfx yüklemiş olursanız görevler kullanılabilir.
İlgili makaleler:
Yardım ve destek
- Sorun giderme sayfamıza bakın
- Stack Overflowöneriler alın, sorularınızı gönderin, yanıtları arayın veya Azure DevOps geliştirici Communitybir özelliği önerin. Destek sayfası.

Araç: Node.js Yükleyicisi
Yardımcı Programı: Komut Satırı