Azure Pipelines:「Unexpected value 'variables'」とほかの Unexpected value
Azure Pipelines は、何かが動き出す前に YAML をスキーマと照らし合わせます。Unexpected value 'X' は、キー X がそこには書けない、という意味です。そのファイルの種類では書けないか、その字下げの段では書けないかのどちらかです。メッセージにファイル・行・列が出るので、考えるのはそのキーがどのファイルのどの段に入るかだけです。
そのパイプラインがプルリクエストのビルド検証なら、プルリクエストはそれを待っています:JetBrains IDE のプラグイン Azure DevOps Pull Requests は、プルリクエストのブランチ ポリシーを状態つきで IntelliJ IDEA・Rider・PyCharm に並べ、Pro なら YAML を直したあとに、失敗したビルド ポリシーをもう一度動かせます。JetBrains Marketplace で入れる
ファイルごとに書けるキー
- メインのパイプライン ファイルは、Microsoft の YAML リファレンスでは4つの形のどれかです:
stages、jobs(ステージは暗黙に1つ)、steps(ジョブは暗黙に1つ)、extends。name(実行番号)・trigger・pr・resources・parametersのような、パイプライン全体のキーはこのファイルの先頭に書きます。 - テンプレートが持つ中身は1種類で、先頭に
parametersを置けます。ステップのテンプレートはsteps、ジョブのテンプレートはjobs、ステージのテンプレートはstagesです。Microsoft のテンプレートのページによると、変数のために読み込むテンプレートには変数しか書けません。 - トリガーはメインのファイルにだけ書けて、テンプレートには書けません(Microsoft の Azure Repos のトリガーのページ)。
よくある例
- ステップ・ジョブ・ステージのテンプレートの先頭で
Unexpected value 'variables':その先頭に書けるのはparametersと、中身の1種類だけです。変数はステージかジョブのvariables:の下に書くか、変数だけのテンプレート(variablesだけのファイル)に移して、そこで- template: vars.ymlとして読み込みます。変数グループも同じで、Microsoft の変数グループのページには、- group: nameを持つ変数のテンプレートを、ステージのvariables:の下で読み込む例があります。ステップのテンプレートに値を渡すときはparametersを使います。 Unexpected value 'stages':先頭ですでにjobsかstepsを使っているファイルや、ジョブやステップのテンプレートにstagesを書いたとき。1つのファイルに形は1つです。ステージのテンプレートはstages:の下で読み込みます。Unexpected value 'steps':stepsがjobsと同じ段にあるか、- job:の下に字下げされていないとき。ファイルにjobsがあれば、ステップはジョブごとに、そのジョブのstepsに書きます。- テンプレートで
Unexpected value 'name':実行番号のnameはメインのファイルのキーです。テンプレートから番号を変えたいときは、スクリプトのステップでログ コマンド##vso[build.updatebuildnumber]を出せば、実行の途中で変えられます。 Unexpected value 'CmdLine@2'のようにタスクの名前が出るとき:パイプラインがテンプレートを extends しているなら、そのテンプレートがタスクをわざと拒んでいることがあります。Microsoft のテンプレートのページには、CmdLine@2のステップをこのエラーに変える extends のテンプレートの例があるので、どのタスクが使えるかをテンプレートの持ち主に聞いてください。そういうテンプレートがないなら、ステップを- task: CmdLine@2でなく、タスクの名前をキーにして書いています。
# azure-pipelines.yml
name: $(Date:yyyyMMdd)$(Rev:.r)
trigger:
- main
variables:
- group: shared-settings
- template: vars.yml
jobs:
- job: build
steps:
- template: steps/build.yml
parameters:
configuration: Release
IntelliJ IDEA・Rider・PyCharm で Azure DevOps のプルリクエスト
Azure DevOps Pull Requests は、JetBrains IDE 2024.1 以降と Android Studio で動く Lesstep のプラグインです。git のリモートから組織・プロジェクト・リポジトリを読み、あなたのレビュー待ちのプルリクエストを IDE のツール ウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも動きます。プルリクエストのブランチ ポリシーを状態つきで見せるので、通っていない必須のビルドがプルリクエストの隣に出ます。Pro なら、失敗したビルド ポリシーや期限の切れたビルド ポリシーをそこからもう一度動かせます。レビューの受信箱は無料、投票・コメント・完了・作成は Pro(30日の無料試用つき)。
Azure DevOps と Azure Pipelines は Microsoft Corporation の商標、IntelliJ IDEA・Rider・PyCharm は JetBrains s.r.o. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。
ほかに:A template expression is not allowed in this context · ビルド検証 · English