首页 > 解决方案 > Azure Pipelines (YAML) - 运行脚本并传入参数

问题描述


我有一个从命令行运行的 Az Powershell 脚本(我们称之为 ```DeployApps.ps1```),它初始化了几个变量,这些变量作为参数传递到脚本中。该脚本基本上会将命名的应用程序部署到一个或多个受环境变量初始化影响的环境。

变量声明可以描述如下:

$ApplicationName = 'HelloWorldApp'
$Environment = @('DEV','SIT','UAT','PROD')

我必须强调,尽管 $Environment 变量可以初始化为一个或多个值,因此即使单独设置为“DEV”,这仍然应该很好,并且脚本将按预期运行。

ApplicationName 变量也可以初始化为多个应用程序之一,而不仅仅是 HelloWorldApp。

从命令行,脚本执行本身可以描述如下:

DeployApps.ps1 $ApplicationName $Environment

我现在需要将以上所有内容复制到 Azure 管道 (YAML) 中。Powershell 脚本本身在我的 Azure 存储库中进行了版本控制,因此从我的管道中的 Azure Powershell/Cli 任务调用或引用它相当简单直接,如下所示。

在此处输入图像描述

我的任务/挑战
我现在想做的是在管道中复制,这正是我从命令行执行脚本的方式。我的意思是能够在管道运行之前或运行时将这两个变量设置为所需的随机值。换句话说,我可以设置两个变量,然后将它们传递给脚本执行。

关于如何做到这一点的任何想法或建议?

标签: azure-pipelinesparameter-passingazure-powershellazure-pipelines-yamlazure-pipelines-tasks

解决方案


您可以为每个场景使用变量组(库)和阶段。变量组用于存储值和秘密。它们可以传递到单个 YAML 管道或多个管道以及一个或不同的作业中。您将需要创建一个变量组,初始化所有变量,然后将其链接到您的管道。您将能够执行您的管道(所有阶段)或单个阶段来执行您想要的。

链接:https ://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=classic#create-a-variable-group

如果您正在寻找更动态的选项,您可以在 YAML 文件中使用运行时参数。运行管道时,参数必须包含名称、数据类型和分配的默认值。如果要在每次运行管道时使用运行时参数手动初始化它们,则必须在管道中将触发器设置为无。

链接:https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/runtime-parameters?view=azure-devops&tabs=script#use-parameters-in-pipelines


推荐阅读