我有一个用于构建管道的模板存储库,例如“ 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参数的存储库?
答案 0 :(得分:2)
在管道中使用模板时,仅使用.yml模板文件,而不使用包含该模板的整个存储库。因此,默认情况下,组成主管道时,模板存储库中可能不存在其他任何其他文件(模板本身除外)。
如果您需要访问模板存储库中存在的脚本或其他文件,则需要使用检出任务并实际检出模板存储库。
- checkout: git://MyProject/MyTemplateRepo
如果您要检查多个存储库,要注意的一件事是,这将导致$(Build.SourcesDirectory)
到change的结构。在实践中,这可能会引起痛苦,因为您必须更新所有期望主存储库位置位于$(Build.SourcesDirectory)
根目录下的任务。
对于新管道,$(Build.SourcesDirectory)
的突变对您来说可能并不重要。如果您有很多要使用新模板的管道,而这些管道需要支持脚本,则可能会变得很痛苦。
一个选择是打包支持模板脚本,并将其发布到内部打包提要中。然后在模板块中,将所需的脚本打包为一个文件。我以前在需要支持powerShell脚本的模板上使用了此策略。我们通过管道传输这些脚本并将其发布为universal packages,然后在模板级别使用它们。