在Azure模板存储库中,有没有办法提及Azure任务'pythonScript'的filePath参数的存储库?

时间:2020-02-14 17:51:52

标签: azure azure-devops azure-pipelines

我有一个用于构建管道的模板存储库,例如“ azure-templates-repo”,我有如下所述的python任务模板:

steps:
- task: PythonScript@0
  inputs:
    scriptSource: 'filepath'
    scriptPath: 'python_test.yml' #this is located on repo: 'azure-templates-repo'

我的问题是关于scriptPath的,当我在存储库azure-pipeline.yml中的构建管道my-great-app中使用此模板时,azure尝试在my-great-app中查找文件,而不是它实际位于的位置{ {1}}。

那么,有没有办法提及azure任务“ pythonScript”的filePath参数的存储库?

1 个答案:

答案 0 :(得分:2)

在管道中使用模板时,仅使用.yml模板文件,而不使用包含该模板的整个存储库。因此,默认情况下,组成主管道时,模板存储库中可能不存在其他任何其他文件(模板本身除外)。

如果您需要访问模板存储库中存在的脚本或其他文件,则需要使用检出任务并实际检出模板存储库。

- checkout: git://MyProject/MyTemplateRepo

如果您要检查多个存储库,要注意的一件事是,这将导致$(Build.SourcesDirectory)change的结构。在实践中,这可能会引起痛苦,因为您必须更新所有期望主存储库位置位于$(Build.SourcesDirectory)根目录下的任务。

对于新管道,$(Build.SourcesDirectory)的突变对您来说可能并不重要。如果您有很多要使用新模板的管道,而这些管道需要支持脚本,则可能会变得很痛苦。

一个选择是打包支持模板脚本,并将其发布到内部打包提要中。然后在模板块中,将所需的脚本打包为一个文件。我以前在需要支持powerShell脚本的模板上使用了此策略。我们通过管道传输这些脚本并将其发布为universal packages,然后在模板级别使用它们。