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

old*_*onk 1 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'
Run Code Online (Sandbox Code Playgroud)

azure-pipeline.yml我的问题是关于 scriptPath,当我在存储库的构建管道中使用此模板时,azure 尝试在文件真正所在的位置my-great-app查找该文件。my-great-appazure-templates-repo

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

Eri*_*ith 5

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

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

- checkout: git://MyProject/MyTemplateRepo

如果您选择检查多个存储库,需要注意的一件事是,这将导致您的结构$(Build.SourcesDirectory)发生变化。实际上,这可能会带来痛苦,因为您必须更新任何预期主存储库位置位于$(Build.SourcesDirectory).

对于新管道来说,这种突变$(Build.SourcesDirectory)可能不是什么大问题。如果您有很多管道想要在其中使用新模板,并且需要支持脚本,那么这可能会变得很痛苦。

一种选择是打包支持模板脚本,并将它们发布到内部包源。然后在模板块中将所需的脚本作为包拉下来。我之前曾在需要支持 powerShell 脚本的模板中使用过此策略。我们对这些脚本进行管道处理并将其发布为通用包,然后在模板级别使用它们。