Azure devops Azure DevOps多级管道YAML:如何签出多个回购?
MyAzure DevOps管道使用来自两个不同回购协议的yaml模板,配置如下Azure devops Azure DevOps多级管道YAML:如何签出多个回购?,azure-devops,azure-pipelines,azure-yaml-pipelines,Azure Devops,Azure Pipelines,Azure Yaml Pipelines,MyAzure DevOps管道使用来自两个不同回购协议的yaml模板,配置如下 有一个应用程序存储库,其中包含可部署的应用程序和一个yaml文件—管道的“根”模板 模板存储库。根模板从模板存储库调用其他模板和阶段。然后,此存储库中的模板调用其他模板和脚本(来自同一存储库) 模板存储库作为根模板中的资源引用。我没有找到一种方法,只签出一次模板repo,然后在所有管道阶段使用模板和脚本。目前,我必须在需要使用其他模板或脚本的每个阶段手动克隆repo模板。在每个阶段结束时,Azure Devops将
模板存储库作为根模板中的资源引用。我没有找到一种方法,只签出一次模板repo,然后在所有管道阶段使用模板和脚本。目前,我必须在需要使用其他模板或脚本的每个阶段手动克隆repo模板。在每个阶段结束时,Azure Devops将清除克隆的回购。有没有一种简单的方法可以只签出一次模板repo,或者以其他方式从子阶段引用其资源?我不确定,因为您没有显示YAML文件,但是否使用了签出步骤:
资源:
存储库:
-存储库:devops
类型:github
名称:kmadof/devops模板
端点:kmadof
步骤:
-结帐:self
-结帐:devops
-脚本:|
echo$(Build.sources目录)
ls$(Build.sources目录)*
-模板:模板/模板。yaml@devops
参数:
repo:devops模板
上面的脚本是两份回购协议。在devops templates
中,我有一个模板,用于主构建yaml文件(位于self
repo)
请再看一看
编辑
我对此做了一些工作,并尝试了一些事情。让我来描述文件之间的第一种关系:
- build.yaml(主回购)
- templates/start.yml(模板回购-带阶段的模板)
- 作业一-模板/process.yaml(模板回购)
- 步骤-模板/other-template.yaml(模板回购)
- 作业二-直接在start.yaml中定义的步骤
- 作业一-模板/process.yaml(模板回购)
- templates/start.yml(模板回购-带阶段的模板)
资源:
存储库:
-存储库:devops
类型:github
名称:kmadof/devops模板
端点:kmadof
阶段:
-模板:模板/开始。yaml@devops
参数:
repo:devops模板
构建步骤:
-结帐:self
-结帐:devops
-bash:回声测试#通过
显示名称:成功
-bash:echo“测试”
显示名称:成功
start.yaml
# File: start.yml
parameters:
- name: repo # defaults for any parameters that aren't specified
default: ''
- name: buildSteps # the name of the parameter is buildSteps
type: stepList # data type is StepList
default: [] # default value of buildSteps
stages:
- stage: secure_buildstage
pool: Hosted VS2017
jobs:
- template: process.yaml
parameters:
pool: # this parameter is called `pool`
vmImage: ubuntu-latest # and it's a mapping rather than a string
- job: secure_buildjob
steps:
- script: echo This happens before code
displayName: 'Base: Pre-build'
- script: echo Building
displayName: 'Base: Build'
- ${{ each step in parameters.buildSteps }}:
- ${{ each pair in step }}:
${{ pair.key }}: ${{ pair.value }}
- script: echo This happens after code
displayName: 'Base: Signing'
过程码
参数:
-名称:'池'
类型:对象
默认值:{}
工作:
-工作:建造
池:${{parameters.pool}
步骤:
-模板:另一个-template.yaml
参数:
repo:devops模板
另一个-template.yaml
参数:
-名称:repo#未指定参数的默认值
默认值:“”
步骤:
-pwsh:编写主机“Hello form Other template”
请看这里:
构建作业使用来自devops template repo的模板,但我不在此作业中签出repo
你可能想知道为什么我们不能对每个构建进行一次签出。这是因为每个作业可以运行不同的代理
这里有几个链接:
步骤:
-任务:PowerShell@2
投入:
文件路径:/scripts/myscript.ps1
Hi Krzysztof,谢谢回复。使用这种方法,我在分析管道YAML时遇到了错误:-意外值“stages”我的YAML是这样的:参数:param1:“stages:-stage:stage1
您可能复制粘贴了它,并将步骤与stages混合在一起。请检查我编辑的答案。谢谢,我错过了将步骤传递到模板的可能性。现在很酷。听到这个消息我很高兴。如果你对我有用的话,你能考虑一下我的回答吗?