Günlüğe kaydetme komutları

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

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ı yararlıdır.

Tür Komutlar
Görev komutları AddAttachment, Complete, LogDetail, LogIssue, PrependPath, SetEndpoint, SetProgress, SetVariable, UploadFile, UploadSummary
Yapıt komutları İlişkile, Karşıya Yükle
Derleme komutları AddBuildTag, UpdateBuildNumber, UploadLog
Sürüm 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ı bir 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ıla.

#!/bin/bash
echo "##vso[task.setvariable variable=testvar;]testvalue"

Dosya yolları mutlak yollar olarak verilmelidir: Windows'ta veya Linux ve macOS'ta başlayan / bir sürücüye kök eklenmiş olmalıdır.

Not

Linux veya macOS kullanırken günlük 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

Komutları günlüğe kaydetmek için UTF-8 kodlamasını kullanın.

Bu komutlar, Azure Pipelines'da günlük biçimlendiricisine gönderilen iletilerdir. Belirli günlük satırlarını hata, uyarı, daraltılabilir bölüm 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]

Biçimlendirme komutlarını bir bash veya PowerShell görevinde 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:

Özel biçimlendirme seçenekleriyle günlüklerin ekran görüntüsü

Bu komut bloğu da daraltılabilir ve şöyle görünür:

Günlüklerin daraltılmış bölümünün ekran görüntüsü

Görev komutları

LogIssue: Hata veya uyarı 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.

Özellikler

  • type = error veya warning (Gerekli)
  • sourcepath = kaynak dosya konumu
  • linenumber = 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 sonra kısa süre sonra vereceğimiz bir komut olur. Denetim Seçenekleri: Hata durumunda devam et'i seçerseniz, exit 1 başarısız derleme yerine kısmen başarılı bir derlemeyle sonuçlanır.

Ö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.

Özellikler

  • 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.

Özellikler

  • result =
    • Succeeded Görev başarılı oldu.
    • SucceededWithIssues Görev sorunlarla karşılaştı. Derleme, kısmen başarılı olduğu için en iyi şekilde tamamlanır.
    • Failed Derleme başarısız olarak tamamlanır. ( Denetim Seçenekleri: Hatada devam et seçeneği belirlenirse, derleme en iyi durumda kısmen başarılı olarak tamamlanır.)

Örnek

##vso[task.complete result=Succeeded;]DONE

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 giriş ekleyese de, 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 parentidtabanlı id iç içe zaman çizelgesi kayıtları oluşturabilir ve güncelleştirebiliriz.

Görev yazarlarının her zaman çizelgesi kaydı için kullandıkları GUID'i hatırlaması gerekir. Günlüğe kaydetme sistemi her zaman çizelgesi kaydı için GUID'yi izler, bu nedenle herhangi bir yeni GUID yeni bir zaman çizelgesi kaydına neden olur.

Özellikler

  • id = Zaman çizelgesi kaydı GUID'i (Gerekli)
  • parentid = Üst zaman çizelgesi kaydı GUID'i
  • type = Kayıt türü (İlk kez gereklidir, üzerine yazılamaz)
  • name = Kayıt adı (İlk kez gereklidir, üzerine yazılamaz)
  • order = zaman çizelgesi kaydının sırası (İlk kez gereklidir, üzerine yazılamaz)
  • starttime = Datetime
  • finishtime = Datetime
  • progress = tamamlanma yüzdesi
  • state = 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

Mevcut zaman çizelgesi kaydını güncelleştirme:

##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 truedeğişkeninin değeri gizli dizi olarak kaydedilir ve günlükten maskelenir. Gizli dizi değişkenleri ortam değişkenleri olarak görevlere 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, aynı işte, gelecekteki bir işte veya gelecekteki bir aşamada bu değişkene erişip erişmediğ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 isoutputfalse 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 .

Özellikler

  • 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)
  • variable = değişken adı (Gerekli)
  • issecret = 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
- bash: |
    echo "##vso[task.setvariable variable=sauce;]crushed tomatoes"
    echo "##vso[task.setvariable variable=secretSauce;issecret=true]crushed tomatoes with garlic"
  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)"
- 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
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: ***

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.

Özellikler

  • id = hizmet bağlantı kimliği (Gerekli)
  • field = alan türü, authParameter, dataParameterveya url (Gerekli)
  • key = key (Gerekli, sürece field = 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.

Özellikler

  • 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 ekleyin

##vso[task.uploadsummary]local file path

Kullanım

Özet Markdown'ı geçerli zaman çizelgesi kaydına yükleyin ve ekleyin. Bu özet derleme/yayın özetine eklenmelidir ve günlüklerle indirilemez. Özet UTF-8 veya ASCII biçiminde olmalıdır. Özet bir Uzantılar sekmesinde görünür.

Örnekler

##vso[task.uploadsummary]c:\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ının ilgilendiği dosyayı geçerli zaman çizelgesi kaydına ek günlük bilgileri olarak yükleyin. Dosya, görev günlükleriyle birlikte indirilebilir.

Ö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 ekleyerek 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.

Özellikler

  • 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ı bir dosya kapsayıcı klasörüne yükleyin ve isteğe bağlı olarak olarak bir yapıt artifactnameyayımlayın.

Özellikler

  • containerfolder = dosyanın karşıya yüklendiğ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, ikincisinin ise yeni bir Yapıtı karşıya yüklemek/yayımlamak için kullanılabilmesidir.

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.

Örnek

##vso[build.addbuildtag]Tag_UnitTestPassed

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

Azure DevOps'ta desteklenir ve sürüm 2020'de başlayan Azure DevOps Server.

Örnek

##vso[release.updatereleasename]my-new-release-name