问题标签 [azure-devops-yaml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-devops - Yaml If 块导致缺少映射
当构建运行不在主分支上时,我正在尝试添加一组可选参数。这个想法是 azure-pipelines-template-variables-private.yml 仅覆盖组中包含的一些参数。
这是我的模板文件:
这将返回错误“预期映射”
如果没有 if 块,则行为如预期 - 参数被覆盖。我正在努力理解 if 块是如何工作的。文档展示了如何将变量与 Group 一起使用,并将变量与模板一起使用——但不能同时使用两者。虽然它似乎可以一起工作,但我希望 if 语句可以工作。
编辑:有关信息,我包括变量模板内容:
powershell - 从 PowerShell 发布 PipelineArtifact
有没有办法从 PowerShell 脚本发布 Pipeline Artefact ?
我想避免为发布文件创建额外的管道任务。
代替:
我宁愿做这样的事情:
也许构建代理提供了一个可以在PowerShell@2
任务中使用的 API,例如:Agent.Plugins.PipelineArtifact.PublishPipelineArtifactTask::PipelineArtifactTaskPluginBaseV1
有任何想法吗?
(ps:这个问题好像有点过时了)
azure - Azure DevOps YAML 中的 ${{ if }} 语法
我有一个自托管虚拟机池(MyTestPool),其中一半专用于安装和测试“开启”构建(打开的功能很少)和“关闭”构建(这是默认安装)。我所有的测试代理虚拟机都具有“全部”作为用户定义的功能。其中一半也被标记为“开”,另一半被标记为“关”。
现在我有两个称为 DEPLOYOFF 和 DEPLOYON 的阶段,如果变量组变量“skipDeployOffStage”或“skipDeployOnStage”设置为 true,则可以跳过这些阶段。如果只测试 ON/OFF,我想做的是使用“ALL”作为代理需求。如果要同时测试 ON 和 OFF,则适当的阶段将要求它们各自的“ON”或“OFF”VM。
问题:${{ if }} 不起作用。
标志之一为假时的输出:
两者都为假时的输出:
我错过了什么?
azure-devops - 不同存储库上的 Azure Devops YAML 管道触发器
对于 azure-pipelines.yaml 文件所在的那个(例如 Repo B),是否可以在不同存储库(例如 Repo A)的分支的提交/PR 上触发 yaml 管道?
我知道我可以针对 Repo B 构建管道,并使用例如:
但是触发器仅适用于 Repo B,即当我在 master 上向 Repo A 提交时,管道不会触发。
azure-devops - Azure Pipelines yml - AzureResourceManagerTemplateDeployment@3 的 overrideParameters 部分中没有替换变量
动态创建的变量不会AzureResourceManagerTemplateDeployment@3
作为
overrideParameters
.
样本模板:
如您所见,有一个override parameters
部分我尝试$sasToken
使用各种方式附加。
到目前为止,我已经尝试过:
- $(sasToken)
- ${{ 变量.sasToken }}
- $[ 变量.sasToken ]
这些都不起作用,而且sasToken
总是空的。
输出网址如下所示:
https://actualAccountName.blob.core.windows.net/templates/linked-appservice-template.json?$(sasToken)
注意$(storageAccountName
:) 被替换而$(sasToken)
没有被替换。
我究竟做错了什么?
azure - 无法确定触发构建的管道
我正在使用 Azure DevOps 的多存储库功能,记录在这里:
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops
我在一个仓库中有我的 YAML 文件,并且管道指向该 YAML。YAML 为另一个存储库资源设置了触发器,因此当该存储库更新时,将触发管道:
文档声称“Build.SourceBranch”变量将允许我确定 MyRepo 中的哪个分支触发了管道构建:“当对其中一个存储库的更新触发管道时,则基于触发存储库设置以下变量”
然而,情况似乎并非如此。无论哪个分支触发构建,“Build.SourceBranch”始终是“refs/heads/master”,大概是因为保存 YAML 的 repo 将“master”作为其默认分支。
我也找不到任何设置为触发构建的分支名称的环境变量。那么如何获取触发构建的分支的名称呢?如果没有可能的方法,我认为这需要添加!
azure-devops - 在 Azure YAML Devops Pipelines 中管理依赖项
我们的解决方案由几个相互调用和支持的微服务组成。
为简化起见,请考虑以下依赖关系图:
- MS1 依赖于 MS2 和 MS3
- MS3 依赖于 MS4
- MS4独立
目标:部署期间的零停机时间
目前,我们正在分析解决以下几种情况的可能方法:
按顺序部署所有微服务,以确保所有端到端测试通过。这意味着首先部署 MS4,然后部署 MS3、MS2、MS1,然后运行测试(所有这些都在插槽中),如果一切通过则切换插槽
单独部署任何服务(其他根本没有改变),运行测试(再次插槽),然后如果一切成功则切换插槽
我们的第一种方法是使用单个(大)管道,每个微服务具有单独的阶段,并检查该微服务是否已更改以部署它。如果微服务没有检测到变化,那么我们想取消阶段并继续下一个阶段。此管道包含每个阶段的模板,例如:
我们认为这将涵盖所描述的场景。“取消命令”应该放在 templates/ms1-check-changes.yml 文件中
问题是我们没有在文档中找到如何取消一个完整的阶段。这让我觉得也许我们的完整方法是错误的。我们还没有找到如何取消一个作业或一组作业,因为我们也怀疑我们是否应该为每个微服务设置阶段。
你可以看到,我们是新手。
您能否就所描述的场景提供一些建议?
variables - 如何在 Azure DevOps 管道的 for 循环中使用定义的变量?
我想将所有包递归地发布为 Azure DevOps 管道中 $(Build.ArtifactStagingDirectory) 文件夹中的通用包。因此,我循环遍历作为先前 bash 脚本的输出创建的用户定义变量。然后,我使用 UniversalPackages@0 任务通过 for 循环发布包。
管道抛出以下错误。
需要一个序列或映射。实际值'$(setVarStep.my_array)'
看起来这不是使用在运行时定义的变量的正确方法。如何在 Azure DevOps 管道的 for 循环中使用定义的变量?
azure-devops - YAML 管道:如果 RESOURCES_TRIGGERINGALIAS = "ui" 则执行任务
我有两个预合并管道:
- uipr
- apipr
还有一个 CI/CD 管道:
- 应用
在 UI 存储库中,每当向分支生成 PR 时main
,uipr就会运行。API repo 和apipr 也是如此。
如果此 PR 前运行成功,则Application
管道将运行。
管道将Application
填充resources.triggeringalias
变量,其中包括执行 CI 的预合并管道的名称:uipr / apipr
该Application
管道还有两个布尔参数,称为compileui和compileapi,默认设置为false。如果我Application
手动运行管道并将其中任何一个设置为 true,它将执行模板以编译选择的任何一个。
我想要实现的是:
- 如果
resources.triggeringalias
等于uipr或parameters.compileui
等于true则执行模板compileui.yaml - 如果
resources.triggeringalias
等于apipr或parameters.compileapi
等于true则执行模板compileapi.yaml
这是我到目前为止所拥有的:
我知道(variables['resources.triggeringalias'], 'ui')仅在运行时发生,而不是在模板扩展时发生。这就是我所缺少的,不知道该怎么做