2017-10-03 7 views
2

フリースタイルプロジェクトからマルチブランチパイプラインビルドに移行しようとしています。新しいコンテナが私のQuay.ioリポジトリにプッシュされたときに私のJenkinsfileを起動させたいと思います。 Freestyle Projectでは、私はQuay.io Trigger Pluginでこれを達成することができます。 マルチブランチビルドパイプラインへの移動これは、postであり、ドッカーハブトリガーをトリガーする方法について説明しています。Jenkinsfile quay.ioトリガープラグインからジョブをトリガー

properties([[$class: 'ScannerJobProperty', doNotScan: false], [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], [$class: 'ThrottleJobProperty', categories: [], limitOneJobWithMatchingParams: false, maxConcurrentPerNode: 0, maxConcurrentTotal: 0, paramsToUseForLimit: '', throttleEnabled: false, throttleOption: 'project'], pipelineTriggers([[$class: 'QuayIoTrigger', repositories: ['hostedsparkbots/janitorbot-timer', 'hostedsparkbots/janitorbot', 'hostedsparkbots/sparky']]])]) 

を上記のケースで、私は私のgithubのリポジトリのスキャンを行うとき、私はバックトレースのを取得:私もJenkinsfileに追加するコードを生成するためにジェンキンスパイプライン構文「ウィザード」を使用しましたゲンキンズコンソールから:

java.lang.IllegalArgumentException: [email protected] 
    at sun.reflect.GeneratedMethodAccessor4447.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.jenkinsci.plugins.structs.describable.Setter$1.set(Setter.java:33) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261) 
Caused: java.lang.IllegalArgumentException: Could not instantiate {repositories=[hostedsparkbots/janitorbot-timer, hostedsparkbots/janitorbot, hostedsparkbots/sparky]} for QuayIoTrigger(repositories?: String[]) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:380) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:461) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:318) 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:259) 
Caused: java.lang.IllegalArgumentException: Could not instantiate {triggers=[{$class=QuayIoTrigger, repositories= 

誰かが実際にJenkinsfileでこの作業をしていますか?

答えて

0

答え:

あなたは予想通り、この作品、Jenkinsfileにjava.util.Setとしてリポジトリのコレクションをキャストした場合。上記のリストを使用して、あなたがこれを行うにしたいと思います:

#!groovy 
@import java.util.Set // this may not be required? 
properties([ 
    pipelineTriggers([[ 
     $class: 'QuayIoTrigger', 
     repositories: (['hostedsparkbots/janitorbot-timer', 
         'hostedsparkbots/janitorbot', 
         'hostedsparkbots/sparky'] as Set) 
    ]]) 
]) 

背景:

私は自分自身をこれを理解するために苦労したが、最終的にはQuay.ioトリガープラグインでsource codeて掘られていました。現在のプラグインはJenkins Pipelineで設計されていないので、リポジトリコレクションのコンストラクタにはit uses a Setが含まれています。

これは、Groovyが文字列のリストを配列として扱うため、キャスト例外が発生している場所です。これを自動的にSetにキャストできません。

明示的にリポジトリのリストをセットとして作成することにより、プラグインはJenkinsfileで設定可能です。

希望すると便利です。

関連する問題