ログ コマンド

ログコマンドは、 タスク とスクリプトがエージェントと通信する方法を示します。 新しい 変数を作成したり、ステップを失敗としてマークしたり、 成果物をアップロードしたりするなどの操作について説明します。 ログコマンドは、パイプラインのトラブルシューティングを行うときに役立ちます。

種類 コマンド
タスクのコマンド LogissuesetprogresslogissuesetprogresssetprogressAddAttachmentuploadsummaryuploadsummaryPrependPath
アーティファクトコマンド 関連付けアップロード
ビルド コマンド Uploadlogupdatebuildnumberaddbuildtag
リリースコマンド UpdateReleaseName

ログコマンドの形式

ログコマンドの一般的な形式は次のとおりです。

##vso[area.action property1=value;property2=value;...]message

また、構文が少し異なる書式設定コマンドもいくつかあります。

##[command]message

ログコマンドを呼び出すには、標準出力を使用してコマンドをエコーします。

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

ファイルパスは、絶対パスとして指定する必要があります。これは、Windows 上のドライブをルートとするか、 / Linux および macOS のから開始します。

注意

Linux および macOS では、コマンドのログ記録の前に ' set-x ' コマンドがサポートされていないことに注意してください。

コマンドの書式設定

注意

ログコマンドには UTF-8 形式を使用します。

これらのコマンドは、Azure Pipelines のログフォーマッタへのメッセージです。 特定のログ行をエラー、警告、折りたたみ可能なセクションなどとしてマークします。

書式設定コマンドは次のとおりです。

##[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]

これらのコマンドは、次のようにログに表示されます。

カスタム書式設定オプションを含むログのスクリーンショット

そのコマンド ブロックを折りたたむ場合もあります。次に示します。

ログの折りたたみセクションのスクリーンショット

タスク コマンド

LogIssue: エラーまたは警告をログに記録する

##vso[task.logissue]error/warning message

使用

現在のタスクのタイムライン レコードにエラーまたは警告メッセージを記録します。

プロパティ

  • type = error または warning (必須)
  • sourcepath = ソース ファイルの場所
  • linenumber = 行番号
  • columnnumber = 列番号
  • code = エラーまたは警告コード

例: エラーをログに記録する

#!/bin/bash
echo "##vso[task.logissue type=error]Something went very wrong."
exit 1

ヒント

exit 1 は省略可能ですが、多くの場合、エラーがログに記録された後すぐに発行されるコマンドです。 [制御オプション : エラー時に続行する] を選択した場合、 は、失敗したビルドではなく、部分的に成功した exit 1 ビルドになります。

例: ファイル内の特定の場所に関する警告をログに記録する

#!/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: 完了したパーセンテージを表示する

##vso[task.setprogress]current operation

使用

現在のタスクの進行状況と現在の操作を設定します。

プロパティ

  • value = 完了率

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

外観を確認するには、ビルドを保存してキューに置いて、ビルドの実行を監視します。 タスクでこのスクリプトを実行すると、進行状況インジケーターが変化することを確認します。

完了: タイムラインの完了

##vso[task.complete]current operation

使用

現在のタスクのタイムラインレコードを完了し、[タスクの結果と現在の操作] を設定します。 結果が指定されていない場合は、結果を succeeded に設定します。

プロパティ

  • result =
    • Succeeded タスクが成功しました。
    • SucceededWithIssues タスクの実行中に問題が発生しました。 ビルドは、正常に部分的に成功したときに完了します。
    • Failed ビルドは失敗として完了します。 ( [制御オプション: エラー時に続行 する] オプションが選択されている場合、ビルドは [成功] の部分的な成功として完了します)。

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

LogDetail: タスクのタイムラインレコードを作成または更新します。

##vso[task.logdetail]current operation

使用

タイムラインレコードを作成して更新します。 これは主に、ステップ、ジョブ、およびステージについてレポートするために Azure Pipelines によって内部的に使用されます。 ユーザーはタイムラインにエントリを追加できますが、通常は UI に表示されません。

1回目の手順では、 ##vso[task.detail] ステップの "詳細タイムライン" レコードを作成します。 入れ子になったタイムラインレコードは、およびに基づいて作成および更新でき id parentid ます。

タスクの作成者は、タイムラインレコードごとに使用された GUID を記憶する必要があります。 ログ記録システムでは、タイムラインレコードごとに GUID が追跡されるため、新しい GUID によって新しいタイムラインレコードが生成されます。

プロパティ

  • id = タイムラインレコード GUID (必須)
  • parentid = 親タイムライン レコード GUID
  • type = レコードの種類 (初回は必須、上書きできない)
  • name = レコード名 (初回は必須、上書きできない)
  • order = タイムライン レコードの順序 (初回は必須、上書きできない)
  • starttime = Datetime
  • finishtime = Datetime
  • progress = 完了の割合
  • state = Unknown | Initialized | InProgress | Completed
  • result = Succeeded | SucceededWithIssues | Failed

新しいルート タイムライン レコードを作成する:

##vso[task.logdetail id=new guid;name=project1;type=build;order=1]create new timeline record

新しい入れ子になったタイムライン レコードを作成する:

##vso[task.logdetail id=new guid;parentid=exist timeline record guid;name=project1;type=build;order=1]create new nested timeline record

更新プログラムが存在するタイムライン レコード:

##vso[task.logdetail id=existing timeline record guid;progress=15;state=InProgress;]update timeline record

SetVariable: 変数の値を初期化または変更します

##vso[task.setvariable]value

使用

taskcontext の変数サービスで変数を設定します。 最初のタスクは変数を設定できます。次のタスクでは 変数を使用できます。 変数は、環境変数として次のタスクに公開されます。

issecret に設定 true されている場合、変数の値はシークレットとして保存され、ログからマスクされます。 シークレット変数は環境変数としてタスクに渡されるのではなく、入力として渡す必要があります。

詳細 については、スクリプトの変数の設定に関 するページを参照してください。

プロパティ

  • variable = 変数名 (必須)
  • issecret = ブール値 (省略可能、既定値は false)
  • isoutput = ブール値 (省略可能、既定値は false)
  • isreadonly = ブール値 (省略可能、既定値は false)

変数を設定します。

- 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 "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)"
    echo "Future jobs can also see $SETVARS_OUTPUTSAUCE"
    echo "Future jobs can also see $(SetVars.outputSauce)"

コンソール出力:

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

SetEndpoint: サービス接続フィールドの変更

##vso[task.setendpoint]value

使用

指定された値を使用してサービス接続フィールドを設定します。 更新された値は、同じジョブ内で実行される後続のタスクのエンドポイントに保持されます。

プロパティ

  • id = サービス接続 ID (必須)
  • field = フィールドの種類、、、またはのいずれか authParameter dataParameter url (必須)
  • key= キー (必要な場合は除く field = url )

##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: ビルドにファイルをアタッチします。

##vso[task.addattachment]value

使用

添付ファイルをアップロードし、現在のタイムラインレコードに添付します。 これらのファイルは、ログを使用してダウンロードすることはできません。 これらは、型または名前の値を使用して拡張機能によってのみ参照できます。

プロパティ

  • type = 添付ファイルの種類 (必須)
  • name = 添付ファイル名 (必須)

##vso[task.addattachment type=myattachmenttype;name=myattachmentname;]c:\myattachment.txt

UploadSummary: ビルドの概要に Markdown コンテンツを追加する

##vso[task.uploadsummary]local file path

使用

Summary markdown をアップロードし、現在のタイムラインレコードにアタッチします。 この概要は、ビルド/リリースの概要に追加する必要があり、ログを使用してダウンロードすることはできません。 概要は、UTF-8 形式または ASCII 形式である必要があります。

##vso[task.uploadsummary]c:\testsummary.md

コマンドの短い形式です。

##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md

UploadFile: タスクログと共にダウンロードできるファイルをアップロードします

##vso[task.uploadfile]local file path

使用

ユーザーに関心のあるファイルを、追加のログ情報として現在のタイムラインレコードにアップロードします。 ファイルは、タスク ログと共にダウンロードできる必要があります。

##vso[task.uploadfile]c:\additionalfile.log

PrependPath: PATH 環境変数の前にパスを追加する

##vso[task.prependpath]local file path

使用

PATH 環境変数を PATH にプリペンドして更新します。 更新された環境変数は、後続のタスクに反映されます。

##vso[task.prependpath]c:\my\directory\path

成果物コマンド

関連付け: 成果物を初期化する

##vso[artifact.associate]artifact location

使用

既存の成果物へのリンクを作成します。 成果物の場所は、ファイル コンテナーパス、VC パス、または UNC 共有パスである必要があります。

プロパティ

  • artifactname = 成果物名 (必須)
  • type = 成果物の種類 (必須) container | filepath | versioncontrol | gitref | tfvclabel

  • container

    ##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
    
  • カスタム成果物

    ##vso[artifact.associate artifactname=myDrop;artifacttype=myartifacttype]https://downloads.visualstudio.com/foo/bar/package.zip
    

アップロード: 成果物をアップロードする

##vso[artifact.upload]local file path

使用

ローカル ファイルをファイル コンテナー フォルダーにアップロードし、必要に応じて成果物を として発行します artifactname

プロパティ

  • containerfolder = ファイルがアップロードされるフォルダー。必要に応じてフォルダーが作成されます。
  • artifactname = 成果物名。 (必須)

##vso[artifact.upload containerfolder=testresult;artifactname=uploadedresult]c:\testresult.trx

注意

Artifact.associate と Artifact.upload の違いは、1 つ目を使用して既存の成果物へのリンクを作成し、後者を使用して新しい成果物をアップロード/発行できる点です。

ビルド コマンド

UploadLog: ログをアップロードする

##vso[build.uploadlog]local file path

使用

ユーザーに関心のあるログをビルドのコンテナー " logs\tool " フォルダーにアップロードします。

##vso[build.uploadlog]c:\msbuild.log

UpdateBuildNumber 作成: 自動的に生成されたビルド番号をオーバーライドします

##vso[build.updatebuildnumber]build number

使用

パイプラインオプションで指定したトークンからビルド番号を自動的に生成できます。 ただし、独自のロジックを使用してビルド番号を設定する場合は、このログコマンドを使用できます。

##vso[build.updatebuildnumber]my-new-build-number

AddBuildTag: ビルドにタグを追加します。

##vso[build.addbuildtag]build tag

使用

現在のビルドのタグを追加します。

##vso[build.addbuildtag]Tag_UnitTestPassed

リリースコマンド

UpdateReleaseName: 現在のリリースの名前を変更

##vso[release.updatereleasename]release name

使用

実行中のリリースのリリース名を更新します。

注意

Azure DevOps および Azure DevOps Server バージョン2020以降でサポートされています。

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