I have the following error when trying to test the sample proposed in the How to create initial seed job section of the README.
jenkins_1 | Jul 03, 2018 8:34:51 PM org.jenkinsci.plugins.casc.BaseConfigurator configure
jenkins_1 | INFO: Setting [email protected] = Simple seed job example
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.InitReactorRunner$1 onTaskFailed
jenkins_1 | SEVERE: Failed ConfigurationAsCode.init
jenkins_1 | java.lang.Error: java.lang.reflect.InvocationTargetException
jenkins_1 | at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
jenkins_1 | at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
jenkins_1 | at jenkins.model.Jenkins$5.runTask(Jenkins.java:1065)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
jenkins_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jenkins_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jenkins_1 | at java.lang.Thread.run(Thread.java:748)
jenkins_1 | Caused by: java.lang.reflect.InvocationTargetException
jenkins_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jenkins_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
jenkins_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jenkins_1 | at java.lang.reflect.Method.invoke(Method.java:498)
jenkins_1 | at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
jenkins_1 | ... 8 more
jenkins_1 | Caused by: org.jenkinsci.plugins.casc.ConfiguratorException: No configurator for root element <jobs>
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:427)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:351)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:324)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:178)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:147)
jenkins_1 | ... 13 more
jenkins_1 |
jenkins_1 | Jul 03, 2018 8:34:51 PM hudson.util.BootFailure publish
jenkins_1 | SEVERE: Failed to initialize Jenkins
jenkins_1 | hudson.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException
jenkins_1 | at hudson.WebAppMain$3.run(WebAppMain.java:250)
jenkins_1 | Caused by: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException
jenkins_1 | at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:269)
jenkins_1 | at jenkins.InitReactorRunner.run(InitReactorRunner.java:47)
jenkins_1 | at jenkins.model.Jenkins.executeReactor(Jenkins.java:1099)
jenkins_1 | at jenkins.model.Jenkins.<init>(Jenkins.java:904)
jenkins_1 | at hudson.model.Hudson.<init>(Hudson.java:86)
jenkins_1 | at hudson.model.Hudson.<init>(Hudson.java:82)
jenkins_1 | at hudson.WebAppMain$3.run(WebAppMain.java:233)
jenkins_1 | Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
jenkins_1 | at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
jenkins_1 | at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
jenkins_1 | at jenkins.model.Jenkins$5.runTask(Jenkins.java:1065)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
jenkins_1 | at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
jenkins_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
jenkins_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
jenkins_1 | at java.lang.Thread.run(Thread.java:748)
jenkins_1 | Caused by: java.lang.reflect.InvocationTargetException
jenkins_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jenkins_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
jenkins_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jenkins_1 | at java.lang.reflect.Method.invoke(Method.java:498)
jenkins_1 | at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
jenkins_1 | ... 8 more
jenkins_1 | Caused by: org.jenkinsci.plugins.casc.ConfiguratorException: No configurator for root element <jobs>
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:427)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:351)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:324)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:178)
jenkins_1 | at org.jenkinsci.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:147)
jenkins_1 | ... 13 more
jenkins_1 |
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins cleanUp
jenkins_1 | INFO: Stopping Jenkins
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins$19 onAttained
jenkins_1 | INFO: Started termination
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins$19 onAttained
jenkins_1 | INFO: Completed termination
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins _cleanUpDisconnectComputers
jenkins_1 | INFO: Starting node disconnection
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins _cleanUpShutdownPluginManager
jenkins_1 | INFO: Stopping plugin manager
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins _cleanUpPersistQueue
jenkins_1 | INFO: Persisting build queue
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins _cleanUpAwaitDisconnects
jenkins_1 | INFO: Waiting for node disconnection completion
jenkins_1 | Jul 03, 2018 8:34:51 PM jenkins.model.Jenkins cleanUp
jenkins_1 | INFO: Jenkins stopped
# Create docker-compose.yml
cat << EOF > docker-compose.yml
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
ports:
- 8080:8080
environment:
- CASC_JENKINS_CONFIG=/var/jenkins_home/casc/jenkins.yml
volumes:
- ./data:/var/jenkins_home
EOF
# Create jenkins.yml from the documentation sample
cat << EOF > ./data/casc/jenkins.yml
jenkins:
systemMessage: "Simple seed job example"
jobs:
- >
multibranchPipelineJob('configuration-as-code') {
branchSources {
git {
remote('https://github.com/jenkinsci/configuration-as-code-plugin.git')
}
}
}
EOF
# Launch Jenkins
docker-compose up -d
Job-dsl support is optional, if you don't user a docker image with job-dsl plugin installed, or you don't configure configuration-as-code to install it, you won't get support for jobs in jenkins.yaml.
Thank you for your help !
I managed to create a quite complete example of an bitbucket organization folder. Do you think it could be interesting to add it to the demos examples to help people like me who struggled with different part of seed jobs ? (the 'traits' for example are not obvious to understand as some of it are not currently possible in pure DSL)
Here is the example :
jenkins:
systemMessage: "Jenkins configured automatically by Jenkins Configuration as Code Plugin\n\n"
jobs:
- >
organizationFolder('Bitbucket Organization Folder') {
description("Bitbucket orga folder configured with JCasC")
displayName('My Project')
// "Projects"
organizations {
bitbucket {
bitbucketServerUrl("https://$SERVER_URL")
repoOwner("MP")
credentialsId("bitbucket-http")
traits {
webhookRegistrationTrait {
mode('ITEM')
}
submoduleOptionTrait {
extension {
disableSubmodules(false)
recursiveSubmodules(true)
trackingSubmodules(false)
reference(null)
timeout(null)
parentCredentials(true)
}
}
}
}
}
// "Behaviours"
// For some 'traits, we need to configure this stuff by hand until JobDSL handles it
// https://issues.jenkins-ci.org/browse/JENKINS-45504
configure { node ->
def traits = node / navigators / 'com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator' / traits
traits << 'com.cloudbees.jenkins.plugins.bitbucket.BranchDiscoveryTrait' {
strategyId('3')
}
traits << 'com.cloudbees.jenkins.plugins.bitbucket.SSHCheckoutTrait' {
credentialsId('bitbucket-ssh')
}
}
// "Project Recognizers"
projectFactories {
workflowMultiBranchProjectFactory {
scriptPath 'ValidationJenkinsfile'
}
}
// "Orphaned Item Strategy"
orphanedItemStrategy {
discardOldItems {
daysToKeep(-1)
numToKeep(-1)
}
}
// "Scan Organization Folder Triggers" : 1 day
// We need to configure this stuff by hand because JobDSL only allow 'periodic(int min)' for now
configure { node ->
node / triggers / 'com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger' {
spec('H H * * *')
interval(86400000)
}
}
}
Hope it will help and keep up the good work on JCasC, great project !
@ndeloof do you want me to submit a PR to add this example to the demos folder or do you think it is not useful since you have the project to decouple the "jobs" section from the JOb DSL plugin in the near future ?
You're welcome to propose a PR. Not sure when we will get this moved to job-dsl plugin
done : #358
I'm facing the same issue although I already installed job-dsl and configuration-as-code plugins.
jobs:
- >
folder('sample')
It's in the configuration-as-code-support plugin now AFAIK
I tried installing configuration-as-code-support but it does not work too.
@nthienan can you create an issue, post your yaml file and list of plugins and the exact exception your getting.
@casz My fault. It works now
Hi @nthienan,
I met a similar problem here https://github.com/jenkinsci/configuration-as-code-plugin/issues/280#issuecomment-508158146 and I'm wondering how did you solve it ?
Cheers,
install job-dsl plugin > 1.74
https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos/jobs
@arnaud-deprez please remove this comment > https://github.com/jenkinsci/configuration-as-code-plugin/issues/280#issuecomment-508158146 as it is completely unrelated
we have pretty active gitter chat so question are best asked there.
install job-dsl plugin > 1.74
or read release notes: https://github.com/jenkinsci/configuration-as-code-plugin/releases/tag/configuration-as-code-1.18
@arnaud-deprez I assume you're using docker? I also assume you persist your JENKINS_HOME directory.
I'd ask that you empty out your plugins folder to give Jenkins a chance to properly load the plugins downloaded by the installplugins.sh script 馃槗
Hi @casz,
I removed the link to the comment as you suggested.
I'm using Kubernetes (Openshift actually) and I tried both with persistent volume and ephemeral and I have same behaviour.
Note that I have also update the kubernetes plugin to kubernetes:1.16.1 but I don't know if it's related.
If you remove the jobs node, and check your installed plugins could you please double check that job-dsl plugin is installed and which version 馃槄
My bad @casz.
I just realized my deployment was not using the tag I was building :-S.
So of course it didn't have job-dsl:1.72.
It is working like a charm.
Thanks for your time and the hints and sorry for the inconvenience :sweat_smile:
Most helpful comment
Job-dsl support is optional, if you don't user a docker image with job-dsl plugin installed, or you don't configure configuration-as-code to install it, you won't get support for
jobsin jenkins.yaml.