web-dev-qa-db-ja.com

JenkinsパイプラインスクリプトでExtended Choice Parameterプラグインを使用するにはどうすればよいですか?

Extended Choice Parameterプラグインは素晴らしく、UI経由で設定されたジョブで使用します https://wiki.jenkins-ci.org/display/JENKINS/Extended+Choice+Parameter+plugin

ただし、Jenkinsfileスタイルのパイプラインスクリプトで動作させるのに苦労しています。 Jenkinsのパイプライン構文ジェネレーターが次のスニペットを作成するため、Extended Choice ParameterプラグインはまだPipelineスクリプトと完全に互換性がないようです。

parameters([<object of type com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition>])

パラメータを手動で作成すると、 https://issues.jenkins-ci.org/browse/JENKINS-32188 で説明したのと同じ動作が得られます

org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class 

@DataBoundConstructorを使用しないExtendedChoiceParameterDefinitionの問題を回避できる回避策を知っている人はいますか?

  • ジェンキンス2.19.2
  • 拡張選択パラメータプラグイン0.75
21
Spangen

2019年4月2日以降、このコミットにより可能になりました: https://github.com/jenkinsci/extended-choice-parameter-plugin/pull/25

たとえば、次のように使用できます。

properties([
    parameters([
        extendedChoice( 
            name: 'PROJECT', 
            defaultValue: '', 
            description: 'Sélectionnez le projet à construire.', 
            type: 'PT_SINGLE_SELECT', 
            groovyScript: valueKeysScript,
            descriptionGroovyScript: valueNamesScript
        )
    ])
])

考えられるすべてのパラメーターを知りたい場合は、 ソースコードを参照 にする必要があります。 「type」キーのすべての可能な値を知りたい場合は、 PT_*定数

7
DevAntoine

このpbの回避策は次のとおりです。

https://Gist.github.com/jgraglia/44a7443847cff6f0d87387a46c7bb82f

すなわち、すべての引数を宣言することにより、パラメータを手動でインスタンス化します

それにより、パイプラインにマルチチェックリストパラメーターを追加することができました。

6
jgraglia

Mkobitが言ったように、現在、拡張選択プラグインをビルドパラメーターとして使用することはできません。

回避策として使用したいのは、次のような構成です

timeout(time: 5, unit: TimeUnit.MINUTES) {
    def result = input(message: 'Set some values', parameters: [
        booleanParam(defaultValue: true, description: '', name: 'SomeBoolean'),
        choice(choices: "Choice One\nChoice Two", description: '', name: 'SomeChoice'),
        stringParam(defaultValue: "Text", description: '', name: 'SomeText')
    ]) as Map<String, String>
}

echo "${result.SomeBoolean}, ${result.SomeChoice}, ${result.SomeText}"

そして、私のパイプラインの始めにそれを呼び出します。その後、ビルドの開始直後にこれらの入力を求められます。

1
Torbilicious