Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jobDSL requires even empty options - bloats jobDSL #87

Open
camproto opened this issue Apr 24, 2023 · 0 comments
Open

jobDSL requires even empty options - bloats jobDSL #87

camproto opened this issue Apr 24, 2023 · 0 comments

Comments

@camproto
Copy link

Jenkins and plugins versions report

Environment
Jenkins: 2.387.1
OS: Linux - 5.14.0-162.18.1.el9_1.x86_64
Java: 11.0.18 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
PrioritySorter:4.1.0
ace-editor:1.1
analysis-model-api:11.1.0
ant:481.v7b_09e538fcca
antisamy-markup-formatter:159.v25b_c67cd35fb_
apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5
audit-trail:333.vb_e1b_b_0f1238c
authentication-tokens:1.4
authorize-project:1.5.1
backup:1.6.1
bootstrap4-api:4.6.0-5
bootstrap5-api:5.2.2-2
bouncycastle-api:2.27
branch-api:2.1071.v1a_188a_562481
build-failure-analyzer:2.4.1
build-monitor-plugin:1.14-667.vfb_ef30539e07
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:2.0.0
claim:516.v36293563731d
cloud-stats:267.v577e3742c282
cloudbees-folder:6.815.v0dd5a_cb_40e0e
command-launcher:90.v669d7ccb_7c31
commons-httpclient3-api:3.1-3
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-36.vc008c8fcda_7b_
conditional-buildstep:1.4.2
config-file-provider:3.11.1
configuration-as-code:1616.v11393eccf675
copyartifact:686.v6fd37018d7c2
credentials:1224.vc23ca_a_9a_2cb_0
credentials-binding:523.vd859a_4b_122e6
crowd2:3.2.1
data-tables-api:1.13.3-3
dependency-check-jenkins-plugin:5.4.0
description-setter:1.10
disk-usage:0.28
display-url-api:2.3.7
docker-commons:419.v8e3cd84ef49c
docker-workflow:563.vd5d2e5c4007f
durable-task:504.vb10d1ae5ba2f
echarts-api:5.4.0-3
email-ext:2.95
envinject:2.901.v0038b_6471582
envinject-api:1.199.v3ce31253ed13
extended-choice-parameter:359.v35dcfdd0c20d
external-monitor-job:203.v683c09d993b_9
font-awesome-api:6.3.0-2
forensics-api:2.1.0
generic-webhook-trigger:1.86.2
git:5.0.0
git-client:4.2.0
git-parameter:0.9.18
git-server:99.va_0826a_b_cdfa_d
github-api:1.303-417.ve35d9dd78549
gitlab-api:5.0.1-78.v47a_45b_9f78b_7
gitlab-branch-source:647.vdee7766b_cfa_e
gitlab-plugin:1.7.9
greenballs:1.15.1
groovy:453.vcdb_a_c5c99890
h2-api:1.4.199
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.31
http_request:1.16
instance-identity:142.v04572ca_5b_265
ionicons-api:45.vf54fca_5d2154
jackson2-api:2.14.2-319.v37853346a_229
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javadoc:226.v71211feb_e7e9
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.8-1
jdk-tool:63.v62d2fd4b_4793
jersey2-api:2.39.1-1
jira:3.9
job-dsl:1.83
jquery:1.12.4-1
jquery-detached:1.2.1
jquery3-api:3.6.4-1
jsch:0.1.55.61.va_e9ee26616e7
junit:1189.v1b_e593637fa_e
ldap:671.v2a_9192a_7419d
lockable-resources:1131.vb_7c3d377e723
mailer:448.v5b_97805e3767
mapdb-api:1.0.9-28.vf251ce40855d
mask-passwords:150.vf80d33113e80
matrix-auth:3.1.6
matrix-project:785.v06b_7f47b_c631
maven-plugin:3.21
metrics:4.2.13-420.vea_2f17932dd6
mina-sshd-api-common:2.9.2-62.v199162f0a_2f8
mina-sshd-api-core:2.9.2-62.v199162f0a_2f8
momentjs:1.1.1
multibranch-build-strategy-extension:1.0.10
nexus-artifact-uploader:2.14
okhttp-api:4.10.0-132.v7a_7b_91cef39c
openstack-cloud:2.63
pam-auth:1.10
parameterized-trigger:2.45
pipeline-build-step:487.va_823138eee8b_
pipeline-cps-http:0.3.1
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-groovy-lib:629.vb_5627b_ee2104
pipeline-input-step:466.v6d0a_5df34f81
pipeline-maven:1279.v5d711113020f
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2125.vddb_a_44a_d605e
pipeline-model-definition:2.2125.vddb_a_44a_d605e
pipeline-model-extensions:2.2125.vddb_a_44a_d605e
pipeline-rest-api:2.32
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2125.vddb_a_44a_d605e
pipeline-stage-view:2.32
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.2.0
popper-api:1.16.1-3
popper2-api:2.11.6-2
prism-api:1.29.0-4
publish-over:0.22
pubsub-light:1.17
resource-disposer:0.21
run-condition:1.5
scm-api:631.v9143df5b_e4a_a
script-security:1229.v4880b_b_e905a_6
snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4
sonar:2.15
sse-gateway:1.26
ssh-agent:327.v230ecd01f86f
ssh-credentials:305.v8f4381501156
ssh-slaves:2.877.v365f5eb_a_b_eec
sshd:3.275.v9e17c10f2571
structs:324.va_f5d6774f3a_d
syslog-logger:1.0.5
thinBackup:1.17
throttle-concurrents:2.12
token-macro:321.vd7cc1f2a_52c8
translation:1.16
trilead-api:2.84.v72119de229b_7
variant:59.vf075fe829ccb
view-job-filters:364.v48a_33389553d
warnings-ng:10.1.0
workflow-aggregator:596.v8c21c963d92d
workflow-api:1208.v0cc7c6e0da_9e
workflow-basic-steps:1010.vf7a_b_98e847c1
workflow-cps:3653.v07ea_433c90b_4
workflow-durable-task-step:1241.v1a_63e465f943
workflow-job:1289.vd1c337fd5354
workflow-multibranch:733.v109046189126
workflow-scm-step:408.v7d5b_135a_b_d49
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.44
xvfb:1.2

What Operating System are you using (both controller, and any agents involved in the problem)?

Controller and Agent Rocky 9.1

Reproduction steps

  1. create a job via jobDSL and use an extendedChoice parameter
  2. use only the needed options
  3. seed job fails with log output

ERROR: (unknown source) the following options are required and must be specified: propertyFile, groovyScript, groovyScriptFile, bindings, groovyClasspath, propertyKey, defaultPropertyFile, defaultGroovyScript, defaultGroovyScriptFile, defaultBindings, defaultGroovyClasspath, defaultPropertyKey, descriptionPropertyValue, descriptionPropertyFile, descriptionGroovyScript, descriptionGroovyScriptFile, descriptionBindings, descriptionGroovyClasspath, descriptionPropertyKey, javascriptFile, javascript, saveJSONParameterToFile, quoteValue
Finished: FAILURE

Expected Results

freeStyleJob('abcd') {
description('a description')
parameters {
extendedChoice {
name('TARGET')
description('a parm description')
type('Multi Select')
visibleItemCount(21)
multiSelectDelimiter(',')
value('option 1,option 2')
defaultValue('option 1,option 2')
}
}
...
}

Actual Results

freeStyleJob('abcd') {
description('a description')
parameters {
extendedChoice {
name('TARGET')
description('a parm description')
type('Multi Select')
visibleItemCount(21)
multiSelectDelimiter(',')
value('option 1,option 2')
defaultValue('option 1,option 2')
// options still required
projectName('')
propertyFile('')
groovyScript('')
groovyScriptFile('')
bindings('')
groovyClasspath('')
propertyKey('')
defaultPropertyFile('')
defaultGroovyScript('')
defaultGroovyScriptFile('')
defaultBindings('')
defaultGroovyClasspath('')
defaultPropertyKey('')
descriptionPropertyValue('')
descriptionPropertyFile('')
descriptionGroovyScript('')
descriptionGroovyScriptFile('')
descriptionBindings('')
descriptionGroovyClasspath('')
descriptionPropertyKey('')
javascriptFile('')
javascript('')
saveJSONParameterToFile(false)
quoteValue(false)
}
}
...
}

Anything else?

Using the wonderful jobDSL approach I would love to get a better support from plugin projects.

Spilling the jobDSL with not needed options could not be the preferred solution, I think.

Would be glad I can remove all useless options from my jobDSL so it is reduced to the really needed options only.

BTW, the documentation of type is not precise enough. In the jobDSL type('PT_MULTI_SELECT') is correct, but that is not clear from the docs.

@camproto camproto changed the title jobDSL requires even empty options - bloats jobDSL needless jobDSL requires even empty options - bloats jobDSL Apr 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant