Jenkins v2.1と統合配信パイプライン機能( https://jenkins.io/solutions/pipeline/ )を使用して、2つの既存のビルド(ビルドとデプロイ)を調整しています。
パラメーター化ビルドでは、3つのユーザーパラメーターがセットアップされていますが、これもパイプラインで選択可能である必要があります。
パイプラインスクリプトは次のとおりです。
node: {
stage 'build'
build job: 'build', parameters: [[$class: 'StringParameterValue', name: 'target', value: target], [$class: 'ListSubversionTagsParameterValue', name: 'release', tag: release], [$class: 'BooleanParameterValue', name: 'update_composer', value: update_composer]]
stage 'deploy'
build job: 'deploy', parameters: [[$class: 'StringParameterValue', name: 'target', value: target]]
}
BooleanParameterValue
を除き、これは正しく機能します。パイプラインを構築すると、次のエラーがスローされます。
Java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class Java.lang.String
この型キャストエラーを解決するにはどうすればよいですか?さらに良いことに、すべてのパイプラインパラメーターをダウンストリームジョブに渡すことができる、面倒な方法はありません。
想定
value: update_composer
問題でした
value: Boolean.valueOf(update_composer)
すべてのパイプラインパラメータをダウンストリームジョブに渡すことができる面倒な方法はありませんか
私が知っていることではありませんが、少なくともJenkins API呼び出しを使用してGroovyサンドボックスを無効にしない限りです。
Jesse Glick answerに加えて、文字列パラメーターを渡したい場合は、次を使用します。
build job: 'your-job-name',
parameters: [
string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
]
jesse Jesse Glick および abguy のように、文字列をブール型に列挙できると述べました。
Boolean.valueOf(string_variable)
または文字列に反対のブール値:
String.valueOf(boolean_variable)
私の場合、別のジョブにブール値パラメーターをダウンストリームする必要がありました。そのためには、クラスBooleanParameterValueを使用する必要があります。
build job: 'downstream_job_name', parameters:
[
[$class: 'BooleanParameterValue', name: 'parameter_name', value: false],
], wait: true
Jenkinsの「boolean」パラメーターは、文字列「true」と「false」にハードコードされた選択肢と、文字列変数を設定するチェックボックスを備えた「choiceパラメーター」タイプのショートカットです。しかし、結局のところ、それは単なる文字列変数であり、真のブール値とは何の関係もありません。そのため、次のような文字列比較を行いたくない場合は、文字列をブール値に変換する必要があります。
if (myBoolean == "true")