web-dev-qa-db-ja.com

ダウンストリームジョブへのパイプラインパスパラメーター

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

この型キャストエラーを解決するにはどうすればよいですか?さらに良いことに、すべてのパイプラインパラメーターをダウンストリームジョブに渡すことができる、面倒な方法はありません。

47
Bram Gerritsen

想定

value: update_composer

問題でした

value: Boolean.valueOf(update_composer)

すべてのパイプラインパラメータをダウンストリームジョブに渡すことができる面倒な方法はありませんか

私が知っていることではありませんが、少なくともJenkins API呼び出しを使用してGroovyサンドボックスを無効にしない限りです。

32
Jesse Glick

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))
    ]
38
abguy

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
8
dsaydon

Jenkinsの「boolean」パラメーターは、文字列「true」と「false」にハードコードされた選択肢と、文字列変数を設定するチェックボックスを備えた「choiceパラメーター」タイプのショートカットです。しかし、結局のところ、それは単なる文字列変数であり、真のブール値とは何の関係もありません。そのため、次のような文字列比較を行いたくない場合は、文字列をブール値に変換する必要があります。

if (myBoolean == "true")

3
Cosmo