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

Typescript 您可以将文件传递到azure管道吗?,typescript,yaml,azure-pipelines,Typescript,Yaml,Azure Pipelines,我有一个用Typescript编写的网站,它有一个按钮,可以触发azure管道运行。我想将一些内容作为参数从网站传递到管道,我看到可以将.yaml结构作为object传递到管道 是否有可能将从.xlsx文件转换的.yaml传递到管道中?如何进行?许可:该网站有一个文件上传,我需要用户在管道中的一个步骤中传递.xlsx文件的内容。没有后端,只有网站 如果不可能,我应该怎么做?因为可以将.yaml结构作为对象传递给管道。您可以尝试下面的解决方法 在管道中定义以保存.xlsx文件的值内容。见下文: p

我有一个用Typescript编写的网站,它有一个按钮,可以触发azure管道运行。我想将一些内容作为参数从网站传递到管道,我看到可以将.yaml结构作为
object
传递到管道

是否有可能将从.xlsx文件转换的.yaml传递到管道中?如何进行?许可:该网站有一个文件上传,我需要用户在管道中的一个步骤中传递.xlsx文件的内容。没有后端,只有网站


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

因为可以将.yaml结构作为对象传递给管道。您可以尝试下面的解决方法

在管道中定义以保存.xlsx文件的值内容。见下文:

parameters:
- name: contentKey
  displayName: Pool Image
  default: contentDefaultValue
{
  "templateParameters":{
     "contentKey": "contentValue"
  }
}
然后,您可以在网站中使用,并在请求正文中提供
templateParameters
,以使用.xlsx文件的内容覆盖管道中定义的运行时参数。见下文:

parameters:
- name: contentKey
  displayName: Pool Image
  default: contentDefaultValue
{
  "templateParameters":{
     "contentKey": "contentValue"
  }
}
如果必须在管道中传递yaml文件。您可以尝试将yaml文件上载到azure devops。然后下载管道中的yaml文件。以便管道步骤可以访问yaml文件

下面是您可以用来将yaml文件上载到azure devops的可能方法

1,您可以在azure devops项目中创建一个存储库来保存yaml文件。并通过网站中的api将文件上载到存储库。看这里。请参阅RESTAPI

然后,您可以在脚本任务中运行
git clone命令
,以下载管道中的文件

2、您可以使用上传文件到workitem附件。看这里

并在运行管道时将附件id传递给管道(您可以参考上面的解决方法并定义一个运行时参数来保存id值)

然后需要调用以在管道中的脚本任务中获取yaml文件

3、将yaml文件上载到azure devops安全文件。看

然后使用task在管道中下载yaml文件

希望以上帮助

更新:

在yaml管道文件中。您可以按如下方式定义参数:

parameters:
  - name: paramname
    type: object
    displayName: 'configure path'
    default: 
      param1: '[{\"a\":\"x\",\"b\":\"y\"},{\"a\":\"x\",\"b\":\"y\"}]'
      param2: 'string1'
      param3: 'string2'
{
  "templateParameters":{
        "paramname": "{\"param1\":\"'[{\\'a\\':\\'x\\',\\'b\\':\\'y\\'},{\\'a\\':\\'x\\',\\'b\\':\\'y\\'}]'\",\"param2\":\"string11\", \"param3\":\"string22\"}"
      }
}
在restapi中。您可以按如下方式传递请求正文:

parameters:
  - name: paramname
    type: object
    displayName: 'configure path'
    default: 
      param1: '[{\"a\":\"x\",\"b\":\"y\"},{\"a\":\"x\",\"b\":\"y\"}]'
      param2: 'string1'
      param3: 'string2'
{
  "templateParameters":{
        "paramname": "{\"param1\":\"'[{\\'a\\':\\'x\\',\\'b\\':\\'y\\'},{\\'a\\':\\'x\\',\\'b\\':\\'y\\'}]'\",\"param2\":\"string11\", \"param3\":\"string22\"}"
      }
}
然后可以访问bash任务中的参数,如下所示:

 echo "${{parameters.paramname.param1}}"
 echo "${{parameters.paramname.param2}}"

非常感谢你详尽的回答!第一种方法看起来像我需要的。但是我有一个关于这个方法的问题:
displayName:Pool Image
做什么?Pool Image是我需要替换的占位符吗?它是您在对管道排队时在ui页面上看到的参数的显示名称。您可以替换它或根本不指定显示名称。感谢您提供有关
displayName
的信息!我一试就接受答案!我必须在网站上做一些其他的东西,今天或明天我将进入这一部分。你能帮我弄清楚如何正确访问对象的值吗?我好像做错了。我的对象的结构如下:
[param1:[{a:'x',b:'y',c:'z'},{a:'x1',b:'y1',c:'z1'}…],param2:'string',param3:'string']
。当我尝试运行将此任务放入作业的管道时:
-bash:echo${{parameters.paramname.param1}
-bash:echo${{parameters.paramname[0][0]}
输出中没有看到任何内容。它似乎能够读取结构,因为在第二个示例中,如果我保留一个
[0]
,它会说“无法将对象转换为字符串”,啊,这一定会让人困惑。因为我必须在网站上做一些更改,所以我想还有两个参数需要发送到管道,我正试图通过将这些变量添加到一个包含原始数据/xlsx数据和两个字符串的大JSON对象中来实现。