Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reload hudson configuration without restarting?

Tags:

hudson

I have a large task ahead of me...modifying several hudson jobs' configuration. What I would want is to do it from command line. But per my experience, hudson will not re-read the configuration unless you force it to "reload configuration from disk".

I don't want to restart hudson just for a small change...like doing a "reload" in apache. Don't know how to read a java code but I'm guessing that what I am looking for lies in the part after saving configuration changes.

like image 882
icasimpan Avatar asked Mar 07 '11 06:03

icasimpan


2 Answers

Here is how to reload a job in Jenkins without restarting or reloading the complete configuration with the use of groovy. You can also easily modify the script and reload some specific or all Jenkins jobs without restarting.

Jenkins allows to run the script over the UI or CLI.

UI: Copy the following script in your Jenkins Script page, for instance http://www.mydomain.com/jenkins/script

import java.io.InputStream;
import java.io.FileInputStream
import java.io.File;
import javax.xml.transform.stream.StreamSource

def hudson = hudson.model.Hudson.instance;

//to get a single job
//def job = hudson.model.Hudson.instance.getItem('my-job');

for(job in hudson.model.Hudson.instance.items) {   

    if (job.name == "my-job") {

        def configXMLFile = job.getConfigFile();
        def file = configXMLFile.getFile();

        InputStream is = new FileInputStream(file);

        job.updateByXml(new StreamSource(is));
        job.save();         
    }      
} 

CLI: You can save the above script in a file and execute it remotely over CLI as a groovy script:

 java -jar jenkins-cli.jar -s http://www.mydomain.com/jenkins groovy reload-job.groovy

References:
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI (CLI) http://javadoc.jenkins-ci.org/hudson (API)

like image 131
Andreas Panagiotidis Avatar answered Oct 06 '22 18:10

Andreas Panagiotidis


http://[jenkins-server]/reload

Taken from Administering Jenkins.

like image 33
Andrew Ryapolov Avatar answered Oct 06 '22 17:10

Andrew Ryapolov