2015-11-10 6 views
5

メタランナーを作成して、ユーザーにチェックボックス(「プロンプト」構成パラメーター)をチェックして、実動環境へのデプロイメントを確認するようにしたいと考えています。チェックボックスがチェックされているかどうかを検証するpowershellスクリプトが含まれています。ここでは、メタランナーのコードです:メタランナーのTeamCity設定パラメータの入力を促すにはどうすればよいですか?

<?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)第2の点は、deploy.to.production.confirmation.checkboxパラメータをビルド構成に追加すると、期待どおりの値が求められますが、この値はPowershellスクリプトに渡されないことです。

(ビルド構成を実行する前に)いくつかの値を指定し、この値をPowershellスクリプトに渡すようにユーザーに求めることができますか?

+0

プロダクションに*常に*配置されている別個のブランチ/ビルド構成を作成することを検討しましたか?これにより、ソースコードを現在の実稼働環境に簡単に関連付けることができます。また、CIとデプロイメントプロセスが合理化されます。 'publishing'は、適切なブランチにマージすることと同義です –

答えて

0

<parameters>セクションでは、ビルドステップレベルパラメータが宣言されているため、ビルドにプロンプ​​トが表示されません。それを得るには、ビルド設定でdeploy.to.production.confirmation.checkboxパラメータを宣言する必要があります。

次に、あなたはこのようにその値を取り、MetaRunnerにそれを渡すことができます:追記オン

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

、私はジャレッドDykstra'sのコメントに同意します。このタスクのための別個のビルド構成の作成を検討する必要があります。

関連する問題