メタランナーを作成して、ユーザーにチェックボックス(「プロンプト」構成パラメーター)をチェックして、実動環境へのデプロイメントを確認するようにしたいと考えています。チェックボックスがチェックされているかどうかを検証する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スクリプトに渡すようにユーザーに求めることができますか?
プロダクションに*常に*配置されている別個のブランチ/ビルド構成を作成することを検討しましたか?これにより、ソースコードを現在の実稼働環境に簡単に関連付けることができます。また、CIとデプロイメントプロセスが合理化されます。 'publishing'は、適切なブランチにマージすることと同義です –