object 型パラメーターの定義
Azure Pipelines ではテンプレートを使って Object 型のパラメーターを作ることができます (Variable では今のところ文字列しか定義できません)。
したがって、Object を定義するにはテンプレートにパラメーターとして渡すしか方法がありません。
次の例では obj という object 型のパラメーターを定義して、template.yml というテンプレートを実行しています。
実行用 YAML ファイル (ci.yml)
name: convert_to_json
trigger: none
jobs:
- template: template.yml
parameters:
obj:
name: Alice
country: Japan
prefecture: Tokyo
friends:
- Bob
- Carol
- Dave
function を使って object を JSON に変換する
Azure Pipelines の YAML では Expression という表記方法の中で built-in の function を使うことができます。
JSON への変換は convertToJSON() という function を使って実行します。
function の一覧はこちらにありますが、convertToJSON() という function はありません・・・
次のテンプレートを使って JSON を出力します。
テンプレート YAML ファイル (template.yml)
parameters:
- name: obj
type: object
jobs:
- job: ConvertToJson
pool:
vmImage: "windows-latest"
variables:
output_path: '$(Build.ArtifactStagingDirectory)\output.json'
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
# Print JSON and save as a file
$str = '${{ convertToJson(parameters.obj) }}'
Write-Host "$($str)"
実行結果
Starting: PowerShell
==============================================================================
Task : PowerShell
Description : Run a PowerShell script on Linux, macOS, or Windows
Version : 2.179.1
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
==============================================================================
Generating script.
========================== Starting Command Output ===========================
"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\a\_temp\c3f8672b-faf6-4539-9529-c0ff6834e8fc.ps1'"
{
"name": "Alice",
"country": "Japan",
"prefecture": "Tokyo",
"friends": [
"Bob",
"Carol",
"Dave"
]
}
Finishing: PowerShell