因为您可以将 .yaml 结构作为对象传递给管道。您可以尝试以下解决方法。
在您的管道中定义 Runtime parameters 以保存 .xlsx 文件的值内容。见下文:
parameters:
- name: contentKey
displayName: Pool Image
default: contentDefaultValue
然后您可以在您的网站中使用pipeline run rest api 并在请求正文中提供templateParameters 以使用.xlsx 文件的内容覆盖您的管道中定义的运行时参数。见下文:
{
"templateParameters":{
"contentKey": "contentValue"
}
}
如果你必须在管道中传递 yaml 文件。您可以尝试将 yaml 文件上传到 azure devops。然后在您的管道中下载 yaml 文件。以便管道步骤可以访问 yaml 文件。
以下是将 yaml 文件上传到 azure devops 的可能方法。
1,您可以在 azure devops 项目中创建一个存储库来保存 yaml 文件。并通过您网站中的 api 将文件上传到存储库。请在此处查看example。参见rest apihere。
然后您可以在脚本任务中运行git clone command 以下载管道中的文件。
2,您可以使用上传文件到工作项附件。请在此处查看rest api。
并在运行管道时将附件 id 传递给管道(您可以参考上面的解决方法并定义一个运行时参数来保存 id 值)。
然后您需要调用rest api 来获取管道中脚本任务中的yaml 文件。
3、将yaml文件上传到azure devops安全文件。见this thread。
然后使用 download secure file 任务下载管道中的 yaml 文件。
希望以上有所帮助!
更新:
在 yaml 管道文件中。你可以定义你的参数如下:
parameters:
- name: paramname
type: object
displayName: 'configure path'
default:
param1: '[{\"a\":\"x\",\"b\":\"y\"},{\"a\":\"x\",\"b\":\"y\"}]'
param2: 'string1'
param3: 'string2'
在其余的 api 中。您可以按如下方式传递请求正文:
{
"templateParameters":{
"paramname": "{\"param1\":\"'[{\\'a\\':\\'x\\',\\'b\\':\\'y\\'},{\\'a\\':\\'x\\',\\'b\\':\\'y\\'}]'\",\"param2\":\"string11\", \"param3\":\"string22\"}"
}
}
然后你可以像下面这样访问bash任务中的参数:
echo "${{parameters.paramname.param1}}"
echo "${{parameters.paramname.param2}}"