パラメーターを取るYAMLベースのパイプラインを作成し、パイプラインをトリガーしてAzure DevOpsから実行しようとしていますREST API。ビルドがキューに入れられるのを確認できますが、パラメータはmy POST body。
私のテンプレートmy-template.yaml
。
parameters:
- name: testParam
type: string
default: 'N/A'
steps:
- script: echo ${{ parameters.testParam }}
テンプレートを拡張する私のパイプラインyaml。
trigger:
- master
extends:
template: my-template.yaml
次に、queue build
REST API:https://dev.Azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1
with POST bodyを以下のように使用して、このパイプラインをトリガーします。
{
"parameters": "{\"testParam\": \"hello world\"}",
"definition": {
"id": 50642
},
"sourceBranch": "refs/heads/master"
}
したがって、パイプラインの実行はhello world
ではなくN/A
をエコーすることを期待しています。残念ながら、パイプラインの結果にはまだN/A
が表示されています。
誰が何が起こったのか知っていますか?何か寂しいですか?
Azure DevOps Rest APIの問題のようです: https://developercommunity.visualstudio.com/content/problem/1000544/parameters-to-api-rest-build-queue-method.html
同じ問題が発生し、ランタイムパラメーターがパイプライン実行に変数として導入されていることに気付きました。したがって、yamlで$ {{parameters.MyParam}}の代わりに$(MyParam)を使用すると、問題が解決します。
パイプラインからテンプレートにパラメーターを送信していません。
documentationがこれが起こるべきであると言っている方法を見てください。私はテストしていませんが、パラメーターをテンプレートに正しく配線すると、テンプレートを使用して期待どおりの結果が得られると思います。
基本的に、テンプレートは次のようになります。
# File: simple-param.yml
parameters:
- name: yesNo # name of the parameter; required
type: boolean # data type of the parameter; required
default: false
steps:
- script: echo ${{ parameters.yesNo }}
そしてあなたのパイプラインはこのようにする必要があります:
# File: Azure-pipelines.yml
trigger:
- master
extends:
template: simple-param.yml
parameters:
yesNo: false # set to a non-boolean value to have the build fail
parameters: yesNo: false
また、、Runtime Parameters Documentationかもしれませんパイプラインパラメーターを明示的なパラメーターとして定義することをお勧めします。
2〜3時間を費やしてソリューションを入手します。
https://dev.Azure.com/{organization}/{project}/_apis/pipelines/2/runs?api-version=6.0-preview.1
Where 2= {pipelineId}
ヘッダー:
Authorization: Personal access token. Use any value for the user name and the token as the password.
Type: basic
Content-Type : application/json
Accept : application/json
今私が使用しているもの:このAPIをテストするためのPostmanなので、投稿のメインスクリーンショットを共有します:
Body partで:
{"previewRun":false,"stagesToSkip": [],"resources": {"repositories": {"self": {"refName": "refs/heads/master"}}},"templateParameters": {"testParam": "rawat Rob" },"variables": {}}
previewRun :{If true, don't actually create a new run. Instead, return the final YAML document after parsing templates.}
それは私のために働いており、約5〜7回テストをしています