您可以将文件传递到Azure管道吗?

时间:2020-09-16 14:50:18

标签: typescript yaml azure-pipelines

我有一个用Typescript编写的网站,该网站带有一个按钮,可触发运行蓝色管道。我想将某些东西从网站传递到管道作为参数,我看到here可以将object的.yaml结构传递到管道。

是否可以将已从.xlsx文件转换的.yaml传递到管道,并且该如何处理?为了清楚起见:网站上载了文件,我需要用户通过管道中的步骤之一传递的.xlsx文件的内容。没有后端,只有网站。

如果那不可能,我应该怎么做?

1 个答案:

答案 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}}"