我有一个用Typescript编写的网站,该网站带有一个按钮,可触发运行蓝色管道。我想将某些东西从网站传递到管道作为参数,我看到here可以将object
的.yaml结构传递到管道。
是否可以将已从.xlsx文件转换的.yaml传递到管道,并且该如何处理?为了清楚起见:网站上载了文件,我需要用户通过管道中的步骤之一传递的.xlsx文件的内容。没有后端,只有网站。
如果那不可能,我应该怎么做?
答案 0 :(得分:0)
因为您可以将.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文件上传到天蓝色devops的可能方法。
1,您可以在azure devops项目中创建一个存储库来保存yaml文件。并通过您网站上的api将文件上传到存储库。请参阅此处的example。请参阅rest api here。
然后,您可以在脚本任务中运行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}}"