job-dsl-plugin/Testing-DSL-Scripts.md at master · jenkinsci/job-dsl-plugin · GitHub 公式でtestの方法書いてくれたのでまずはこれを試してみる
gradle初期化
gradle init
サンプルはバージョン古くて動かなかったので上げてみたけど、testディレクトリが認識されない?のか実行されないで終了する
build.gradle
Spock
13. ユニットテスト - Apache Groovyチュートリアル Groovyのテスティングフレームワークのスタンダードらしい。聞いたことなかった
https://github.com/sheehan/job-dsl-gradle-example → 自分でこの構成を真似てファイルを作ったら動く カスタマイズしやすいのでこれが良さそう
https://github.com/AOEpeople/gradle-jenkins-job-dsl-plugin → gradle 6系にしたらとりあえず動く
https://github.com/johnmartel/jenkins-job-dsl-script-validator-plugin → バージョン古すぎて動かなかった
エラー対処
./gradlew test でテスト実行できるようになった
version 2.4 or later of plugin 'workflow-job' needs to be installed
https://github.com/AOEpeople/gradle-jenkins-job-dsl-plugin/issues/16 より新しいプラグインを入れてもエラーになり、ぴったりのバージョンでないとだめ 正規表現がおかしいっぽい
Caused by: javaposse.jobdsl.dsl.DslScriptException: (script, line 6) No signature of method: javaposse.jobdsl.dsl.helpers.BuildParametersContext.booleanParam() is applicable for argument types: (java.util.LinkedHashMap) values: [[parameterName:FOO, defaultValue:false]]
名前付き引数で書いてるところがエラーになってる 実際にはジョブ反映されている http://job-dsl.herokuapp.com で実行するとたしかにエラーになるから書き方変えるべきなのか
Could not create item, unknown parent path in "path/to/job"
foldersで親ディレクトリ作られるはずだけど、読み込み順の問題かもしれない
Caused by: java.lang.NoClassDefFoundError: com/cloudbees/hudson/plugins/folder/Folder
Folders pluginはインストールしているのになぜ なぜかひとつのサブフォルダだけでテストするとうまくいく、複数のファイル一気にテストしようとすると発生する
No signature of method: javaposse.jobdsl.dsl.helpers.BuildParametersContext.gitParameter
git-parameterプラグインは追加しているのに解消されない