Günlük komutları
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Günlük komutları, görevlerin ve betiklerin aracıyla iletişim kurma şeklidir. Yeni değişkenler oluşturma, bir adımı başarısız olarak işaretleme ve yapıtları karşıya yükleme gibi eylemleri kapsar. İşlem hattı sorunlarını giderirken günlüğe kaydetme komutları kullanışlıdır.
Önemli
Gizli dizilerin Azure Pipelines çıkışında görünmesini maskeleme çabası gösteririz, ancak yine de önlem almanız gerekir. Gizli dizileri hiçbir zaman çıkış olarak yankılamayın. Bazı işletim sistemleri komut satırı bağımsız değişkenlerini günlüğe kaydeder. Komut satırında gizli dizileri hiçbir zaman geçirmeyin. Bunun yerine gizli dizilerinizi ortam değişkenlerine eşlemenizi öneririz.
Gizli dizilerin alt dizelerini asla maskelemeyiz. Örneğin, "abc123" gizli dizi olarak ayarlandıysa, "abc" günlüklerden maskelenmez. Bu, gizli dizileri çok ayrıntılı bir düzeyde maskeleyerek günlükleri okunamaz hale getirmekten kaçınmaktır. Bu nedenle gizli diziler yapılandırılmış veriler içermemelidir. Örneğin, "{ "foo": "bar" }" gizli dizi olarak ayarlanırsa, "çubuk" günlüklerden maskelenmez.
Tür | Komutlar |
---|---|
Görev komutları | AddAttachment, Complete, LogDetail, LogIssue, PrependPath, SetEndpoint, SetProgress, SetVariable, SetSecret, UploadFile, UploadSummary |
Yapıt komutları | İlişkili, Karşıya Yükle |
Derleme komutları | AddBuildTag, UpdateBuildNumber, UploadLog |
Yayın komutları | UpdateReleaseName |
Günlüğe kaydetme komut biçimi
Günlüğe kaydetme komutunun genel biçimi:
##vso[area.action property1=value;property2=value;...]message
Biraz farklı söz dizimine sahip birkaç biçimlendirme komutu da vardır:
##[command]message
Günlüğe kaydetme komutunu çağırmak için komutu standart çıkış aracılığıyla yankılar.
#!/bin/bash
echo "##vso[task.setvariable variable=testvar;]testvalue"
Dosya yolları mutlak yollar olarak verilmelidir: Windows'ta bir sürücüye veya Linux ve macOS'ta başlayarak /
köke dayalıdır.
Not
Linux veya macOS kullanırken günlüğe kaydetme komutundan önce komutunu kullanamazsınız set -x
. Bash için geçici olarak devre dışı bırakma set -x
hakkında bilgi edinmek için sorun giderme bölümüne bakın.
Biçimlendirme komutları
Not
Günlük komutları için UTF-8 kodlamasını kullanın.
Bu komutlar, Azure Pipelines'da günlük biçimlendiriciye gönderilen iletilerdir. Belirli günlük satırlarını hatalar, uyarılar, daraltılabilir bölümler vb. olarak işaretler.
Biçimlendirme komutları şunlardır:
##[group]Beginning of a group
##[warning]Warning message
##[error]Error message
##[section]Start of a section
##[debug]Debug text
##[command]Command-line being run
##[endgroup]
Bash veya PowerShell görevinde biçimlendirme komutlarını kullanabilirsiniz.
steps:
- bash: |
echo "##[group]Beginning of a group"
echo "##[warning]Warning message"
echo "##[error]Error message"
echo "##[section]Start of a section"
echo "##[debug]Debug text"
echo "##[command]Command-line being run"
echo "##[endgroup]"
Bu komutlar günlüklerde şu şekilde işlenir:
Bu komut bloğu da daraltılabilir ve şöyle görünür:
Görev komutları
LogIssue: Hata veya uyarıyı günlüğe kaydetme
##vso[task.logissue]error/warning message
Kullanım
Geçerli görevin zaman çizelgesi kaydında bir hata veya uyarı iletisi günlüğe kaydedin.
Properties
type
=error
veyawarning
(Gerekli)sourcepath
= kaynak dosya konumulinenumber
= satır numarasıcolumnnumber
= sütun numarasıcode
= hata veya uyarı kodu
Örnek: Hata kaydetme
#!/bin/bash
echo "##vso[task.logissue type=error]Something went very wrong."
exit 1
İpucu
exit 1
isteğe bağlıdır, ancak genellikle bir hata günlüğe kaydedildikten kısa süre sonra vereceğimiz bir komut olur. Denetim Seçenekleri: Hatada devam et'i seçerseniz, exit 1
başarısız derleme yerine kısmen başarılı bir derlemeyle sonuçlanır. Alternatif olarak, kullanabilirsiniz task.logissue type=error
.
Örnek: Dosyadaki belirli bir yerle ilgili bir uyarıyı günlüğe kaydetme
#!/bin/bash
echo "##vso[task.logissue type=warning;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]Found something that could be a problem."
SetProgress: Tamamlanan yüzdeyi göster
##vso[task.setprogress]current operation
Kullanım
Geçerli görev için ilerleme durumunu ve geçerli işlemi ayarlayın.
Properties
value
= tamamlanma yüzdesi
Örnek
echo "Begin a lengthy process..."
for i in {0..100..10}
do
sleep 1
echo "##vso[task.setprogress value=$i;]Sample Progress Indicator"
done
echo "Lengthy process is complete."
Nasıl göründüğünü görmek için, derlemeyi kaydedip kuyruğa alın ve ardından derlemenin çalışmasını izleyin. Görev bu betiği çalıştırdığında ilerleme göstergesinin değiştiğini gözlemleyin.
Tamamlandı: Zaman çizelgesini bitir
##vso[task.complete]current operation
Kullanım
Geçerli görevin zaman çizelgesi kaydını tamamlayın, görev sonucunu ve geçerli işlemi ayarlayın. Sonuç sağlanmadığında, sonucu başarılı olarak ayarlayın.
Properties
result
=Succeeded
Görev başarılı oldu.SucceededWithIssues
Görev sorunlarla karşılaştı. Derleme, en iyi durumda kısmen başarılı olarak tamamlanır.Failed
Derleme başarısız olarak tamamlanacak. (Eğer Denetim Seçenekleri: Hatada devam et seçeneği belirlendi, derleme en iyi durumda kısmen başarılı olarak tamamlanacak.)
Örnek
Bir görevi başarılı olarak günlüğe kaydetme.
##vso[task.complete result=Succeeded;]DONE
Görevi başarısız olarak ayarlayın. Alternatif olarak, kullanabilirsiniz exit 1
.
- bash: |
if [ -z "$SOLUTION" ]; then
echo "##vso[task.logissue type=error;]Missing template parameter \"solution\""
echo "##vso[task.complete result=Failed;]"
fi
LogDetail: Görev için zaman çizelgesi kaydı oluşturma veya güncelleştirme
##vso[task.logdetail]current operation
Kullanım
Zaman çizelgesi kayıtlarını oluşturur ve güncelleştirir. Bu, öncelikle Azure Pipelines tarafından adımlar, işler ve aşamalar hakkında rapor vermek için dahili olarak kullanılır. Müşteriler zaman çizelgesine girdiler ekleyebilir ancak bunlar genellikle kullanıcı arabiriminde gösterilmez.
Bir adım sırasında ilk kez gördüğümüzde ##vso[task.detail]
, adım için bir "ayrıntı zaman çizelgesi" kaydı oluştururuz. ve tabanlı id
iç içe zaman çizelgesi kayıtlarını oluşturabilir ve parentid
güncelleştirebiliriz.
Görev yazarlarının her zaman çizelgesi kaydı için hangi GUID'i kullandıklarını hatırlamaları gerekir. Günlük sistemi, her zaman çizelgesi kaydı için GUID'yi izler, bu nedenle herhangi bir yeni GUID yeni bir zaman çizelgesi kaydına neden olur.
Properties
id
= Zaman çizelgesi kaydı GUID'i (Gerekli)parentid
= Üst zaman çizelgesi kaydı GUID'itype
= Kayıt türü (İlk kez gereklidir, üzerine yazılamaz)name
= Kayıt adı (İlk kez gerekli, üzerine yazılamıyor)order
= zaman çizelgesi kaydının sırası (İlk kez gereklidir, üzerine yazılamaz)starttime
=Datetime
finishtime
=Datetime
progress
= tamamlanma yüzdesistate
=Unknown
|Initialized
|InProgress
|Completed
result
=Succeeded
|SucceededWithIssues
|Failed
Örnekler
Yeni kök zaman çizelgesi kaydı oluşturma:
##vso[task.logdetail id=new guid;name=project1;type=build;order=1]create new timeline record
Yeni iç içe zaman çizelgesi kaydı oluşturun:
##vso[task.logdetail id=new guid;parentid=exist timeline record guid;name=project1;type=build;order=1]create new nested timeline record
Güncelleştirme var olan zaman çizelgesi kaydı:
##vso[task.logdetail id=existing timeline record guid;progress=15;state=InProgress;]update timeline record
SetVariable: Değişkenin değerini başlatma veya değiştirme
##vso[task.setvariable]value
Kullanım
taskcontext değişken hizmetinde bir değişken ayarlar. İlk görev bir değişken ayarlayabilir ve aşağıdaki görevler değişkeni kullanabilir. değişkeni, ortam değişkeni olarak aşağıdaki görevlere sunulur.
issecret
olarak ayarlandığında true
değişkeninin değeri gizli dizi olarak kaydedilir ve günlükten maskelenir. Gizli dizi değişkenleri görevlere ortam değişkenleri olarak geçirilmiyor ve bunun yerine giriş olarak geçirilmesi gerekiyor.
isoutput
Küme değişkenine true
başvurmak için söz dizimine ayarlandığında, bu değişkene aynı işte mi, gelecekteki bir işte mi yoksa gelecekteki bir aşamada mı eriştiğinize bağlı olarak değişir. Ayrıca, aynı iş içinde bu değişkeni kullanmak için söz dizimine ayarlanırsa isoutput
false
ayrıdır. Her kullanım örneği için uygun söz dizimini belirlemek için çıkış değişkenlerinin düzeylerine bakın.
Daha fazla ayrıntı için bkz . betiklerde değişkenleri ayarlama ve değişkenleri tanımlama.
Properties
variable
= değişken adı (Gerekli)issecret
= boole değeri (İsteğe bağlı, varsayılan değer false'tur)isoutput
= boole değeri (İsteğe bağlı, varsayılan değer false'tur)isreadonly
= boole değeri (İsteğe bağlı, varsayılan değer false'tur)
Örnekler
Değişkenleri ayarlayın:
- bash: |
echo "##vso[task.setvariable variable=sauce;]crushed tomatoes"
echo "##vso[task.setvariable variable=secretSauce;issecret=true]crushed tomatoes with garlic"
echo "##vso[task.setvariable variable=outputSauce;isoutput=true]canned goods"
name: SetVars
Değişkenleri okuyun:
- bash: |
echo "Non-secrets automatically mapped in, sauce is $SAUCE"
echo "Secrets are not automatically mapped in, secretSauce is $SECRETSAUCE"
echo "You can use macro replacement to get secrets, and they'll be masked in the log: $(secretSauce)"
Konsol çıkışı:
Non-secrets automatically mapped in, sauce is crushed tomatoes
Secrets are not automatically mapped in, secretSauce is
You can use macro replacement to get secrets, and they'll be masked in the log: ***
Future jobs can also see canned goods
Future jobs can also see canned goods
SetSecret: Bir değeri gizli dizi olarak kaydetme
##vso[task.setsecret]value
Kullanım
Değer, iş süresi boyunca gizli dizi olarak kaydedilir. Değer, bu noktadan sonra günlüklerden maskelenir. Bu komut, bir gizli dizi dönüştürüldüğünde (örn. base64 kodlanmış) veya türetildiğinde kullanışlıdır.
Not: Gizli dizi değerinin önceki oluşumları maskelenmez.
Örnekler
Değişkenleri ayarlayın:
- bash: |
NEWSECRET=$(echo $OLDSECRET|base64)
echo "##vso[task.setsecret]$NEWSECRET"
name: SetSecret
env:
OLDSECRET: "SeCrEtVaLuE"
Değişkenleri okuyun:
- bash: |
echo "Transformed and derived secrets will be masked: $(echo $OLDSECRET|base64)"
env:
OLDSECRET: "SeCrEtVaLuE"
Konsol çıkışı:
Transformed and derived secrets will be masked: ***
SetEndpoint: Hizmet bağlantısı alanını değiştirme
##vso[task.setendpoint]value
Kullanım
Verilen değere sahip bir hizmet bağlantısı alanı ayarlayın. Güncelleştirilen değer, aynı iş içinde yürütülen sonraki görevler için uç noktada tutulur.
Properties
id
= hizmet bağlantı kimliği (Gerekli)field
= alan türü, ,authParameter
dataParameter
, veyaurl
(Gerekli)key
= anahtar (Gerekli, sürecefield
=url
)
Örnekler
##vso[task.setendpoint id=000-0000-0000;field=authParameter;key=AccessToken]testvalue
##vso[task.setendpoint id=000-0000-0000;field=dataParameter;key=userVariable]testvalue
##vso[task.setendpoint id=000-0000-0000;field=url]https://example.com/service
AddAttachment: Derlemeye dosya ekleme
##vso[task.addattachment]value
Kullanım
Geçerli zaman çizelgesi kaydına ek yükleme ve ekleme. Bu dosyalar günlüklerle indirilemez. Bunlara yalnızca tür veya ad değerleri kullanılarak uzantılar başvurabilir.
Properties
type
= ek türü (Gerekli)name
= ek adı (Gerekli)
Örnek
##vso[task.addattachment type=myattachmenttype;name=myattachmentname;]c:\myattachment.txt
UploadSummary: Derleme özetine bazı Markdown içeriği ekleme
##vso[task.uploadsummary]local file path
Kullanım
Depodaki bir .md dosyasından özet Markdown'ı geçerli zaman çizelgesi kaydına yükleyin ve ekleyin. Bu özet derleme/yayın özetine eklenir ve günlüklerle indirilemez. Özet UTF-8 veya ASCII biçiminde olmalıdır. Özet, işlem hattı çalıştırmanızın Uzantılar sekmesinde görünür. Uzantılar sekmesindeki Markdown işleme, Azure DevOps wiki işlemesinden farklıdır.
Örnekler
##vso[task.uploadsummary]$(System.DefaultWorkingDirectory)/testsummary.md
Komut için kısa bir el formu
##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md
UploadFile: Görev günlükleriyle indirilebilen bir dosyayı karşıya yükleme
##vso[task.uploadfile]local file path
Kullanım
Kullanıcıyla ilgilenen dosyayı geçerli zaman çizelgesi kaydına ek günlük bilgileri olarak yükleyin. Dosya, görev günlükleriyle birlikte indirilebilir olacaktır.
Örnek
##vso[task.uploadfile]c:\additionalfile.log
PrependPath: PATH ortam değişkenine bir yol ekleme
##vso[task.prependpath]local file path
Kullanım
PATH ortam değişkenini PATH'e önceden sabitleyerek güncelleştirin. Güncelleştirilmiş ortam değişkeni sonraki görevlere yansıtılır.
Örnek
##vso[task.prependpath]c:\my\directory\path
Yapıt komutları
İlişkili: Yapıtı başlatma
##vso[artifact.associate]artifact location
Kullanım
Var olan bir Yapıtın bağlantısını oluşturun. Yapıt konumu bir dosya kapsayıcı yolu, VC yolu veya UNC paylaşım yolu olmalıdır.
Properties
artifactname
= yapıt adı (Gerekli)type
= yapıt türü (Gerekli)container
|filepath
|versioncontrol
|gitref
|tfvclabel
Örnekler
Kapsayıcı
##vso[artifact.associate type=container;artifactname=MyServerDrop]#/1/build
Filepath
##vso[artifact.associate type=filepath;artifactname=MyFileShareDrop]\\MyShare\MyDropLocation
Versioncontrol
##vso[artifact.associate type=versioncontrol;artifactname=MyTfvcPath]$/MyTeamProj/MyFolder
gitref
##vso[artifact.associate type=gitref;artifactname=MyTag]refs/tags/MyGitTag
tfvclabel
##vso[artifact.associate type=tfvclabel;artifactname=MyTag]MyTfvcLabel
Özel Yapıt
##vso[artifact.associate artifactname=myDrop;artifacttype=myartifacttype]https://downloads.visualstudio.com/foo/bar/package.zip
Karşıya Yükleme: Yapıtı karşıya yükleme
##vso[artifact.upload]local file path
Kullanım
Yerel bir dosyayı dosya kapsayıcısı klasörüne yükleyin ve isteğe bağlı olarak olarak artifactname
bir yapıt yayımlayın.
Properties
containerfolder
= dosyanın karşıya yükleyeceği klasör, gerekirse klasör oluşturulur.artifactname
= yapıt adı. (Gerekli)
Örnek
##vso[artifact.upload containerfolder=testresult;artifactname=uploadedresult]c:\testresult.trx
Not
Artifact.associate ile Artifact.upload arasındaki fark, ilkinin mevcut bir yapıta bağlantı oluşturmak için kullanılabilmesi, ikincisi ise yeni bir Yapıtı karşıya yüklemek/yayımlamak için kullanılabilir olmasıdır.
Derleme komutları
UploadLog: Günlüğü karşıya yükleme
##vso[build.uploadlog]local file path
Kullanım
Kullanıcının ilgilendiği günlüğü derlemenin kapsayıcı "logs\tool
" klasörüne yükleyin.
Örnek
##vso[build.uploadlog]c:\msbuild.log
UpdateBuildNumber: Otomatik olarak oluşturulan derleme numarasını geçersiz kılma
##vso[build.updatebuildnumber]build number
Kullanım
İşlem hattı seçeneklerinde belirttiğiniz belirteçlerden otomatik olarak bir derleme numarası oluşturabilirsiniz. Ancak, derleme numarasını ayarlamak için kendi mantığınızı kullanmak istiyorsanız, bu günlük komutunu kullanabilirsiniz.
Örnek
##vso[build.updatebuildnumber]my-new-build-number
AddBuildTag: Derlemeye etiket ekleme
##vso[build.addbuildtag]build tag
Kullanım
Geçerli derleme için bir etiket ekleyin. Etiketi önceden tanımlanmış veya kullanıcı tanımlı bir değişkenle genişletebilirsiniz. Örneğin, burada bash görevine değeriyle last_scanned-$(currentDate)
yeni bir etiket eklenir. AddBuildTag ile iki nokta üst üste kullanamazsınız.
Örnek
- task: Bash@3
inputs:
targetType: 'inline'
script: |
last_scanned="last_scanned-$(currentDate)"
echo "##vso[build.addbuildtag]$last_scanned"
displayName: 'Apply last scanned tag'
Yayın komutları
UpdateReleaseName: Geçerli sürümü yeniden adlandır
##vso[release.updatereleasename]release name
Kullanım
Çalışan sürümün yayın adını güncelleştirin.
Not
Sürüm 2020'de başlayan Azure DevOps ve Azure DevOps Server'da desteklenir.
Örnek
##vso[release.updatereleasename]my-new-release-name