如何提示元运行器的 TeamCity 配置参数?

问题描述 投票:0回答:2

我想创建元运行程序,它将要求用户选中复选框(“提示”配置参数)以确认部署到生产。

它包含 PowerShell 脚本,用于验证复选框是否已选中。这是元跑步者的代码:

<?xml version="1.0" encoding="UTF-8"?>
<meta-runner name="Confirm deploy to production">
  <description>Force user to check checkbox to confirm deploy to production</description>
  <settings>
    <parameters>
      <param name="deploy.to.production.confirmation.checkbox" value="false" spec="checkbox description='Are you sure?' label='This is deployment to PRODUCTION environment.' uncheckedValue='false' display='prompt' checkedValue='true'" />
    </parameters>
    <build-runners>
      <runner name="Confirm deploy to production" type="jetbrains_powershell">
        <parameters>
          <param name="jetbrains_powershell_bitness" value="x86" />
          <param name="jetbrains_powershell_errorToError" value="false" />
          <param name="jetbrains_powershell_execution" value="PS1" />
          <param name="jetbrains_powershell_script_code"><![CDATA[trap
{
    write-output $_
    ##teamcity[buildStatus status='FAILURE' ]
    exit 1
}
write-host "##teamcity[message text='Starting confirmation validation...']"
if("%deploy.to.production.confirmation.checkbox%" -eq "false"){
    write-host "##teamcity[message text='Confirmation validation FAILED' errorDetails='This is a production deployment. The confirm checkbox must be checked to proceed with the deploy process.' status='ERROR']"
    throw "Confirmation validation FAILED"
} else {
    write-host "##teamcity[message text='Confirmation validation SUCCESSFUL']"
}]]></param>
          <param name="jetbrains_powershell_script_mode" value="CODE" />
          <param name="teamcity.step.mode" value="default" />
        </parameters>
      </runner>
    </build-runners>
    <requirements />
  </settings>
</meta-runner>
  1. 第一件事是参数

    deploy.to.production.confirmation.checkbox
    没有按预期工作,并且在每个构建上都没有显示确认对话框,我只能在步骤配置页面上指定它。

  2. 第二件事是,如果我将

    deploy.to.production.confirmation.checkbox
    参数添加到我的构建配置中,它将按预期提示值,但该值不会传递给 PowerShell 脚本。

如何要求用户指定某个值(在运行构建配置之前),然后将该值传递给 PowerShell 脚本?

teamcity teamcity-9.0
2个回答
0
投票

<parameters>
部分声明了构建步骤级别参数,这就是为什么你在构建时没有得到提示。为此,您必须在构建配置中声明
deploy.to.production.confirmation.checkbox
参数。

然后您可以将该值传递给 MetaRunner,如下所示:

<param name="deploy.to.production.confirmation.checkbox" value="%deploy.to.production.confirmation.checkbox%" />

顺便说一句,我同意 Jared Dykstra 的评论。您应该考虑为此任务创建单独的构建配置。


0
投票

是的,您可以进行构建配置来提示输入参数值。

编辑规格

然后就可以自定义提示显示了

© www.soinside.com 2019 - 2024. All rights reserved.