web-dev-qa-db-ja.com

再起動せずにハドソン設定をリロードする方法は?

私の前には大きな課題があります...いくつかのハドソンジョブの構成を変更します。私がしたいのは、コマンドラインからそれを行うことです。しかし、私の経験によれば、ハドソンは、「ディスクから構成を再ロード」するように強制しない限り、構成を再読み取りしません。

Apacheで「リロード」を実行するなど、小さな変更のためだけにハドソンを再起動したくありません。 Javaコードの読み方がわかりませんが、構成の変更を保存した後の部分に私が探しているものがあると思います。

14
icasimpan

Hudson/Jenkinsは、ランタイム構成をメモリに保持し、起動時または「ディスクから構成を再ロード」するときにのみ再ロードします。

ただし、ディスクから構成を再ロードは再起動ではなく、構成を再読み取りするだけです。

リロードするか再起動するかは、これですべてです。

別の方法で動作するようにハッキングするのは大きな作業であり、まだreadJavaコードがない場合は、お勧めしません事実上、メインプロジェクトからもフォークする必要があるため、更新に互換性がありません。

スクリプトを介してすべての更新を実行してから、構成を自動再ロードする必要がある場合は、 hudson_cli.jar それをする。

8
ocodo

これがgroovyを使用して完全な構成を再起動または再ロードせずにJenkinsでジョブをリロードする方法です。また、スクリプトを簡単に変更して、再起動せずに特定またはすべてのJenkinsジョブをリロードすることもできます。

Jenkinsでは、UIまたはCLIを介してスクリプトを実行できます。

[〜#〜] ui [〜#〜]:次のスクリプトをJenkinsスクリプトページにコピーします。たとえば、 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 [〜#〜]:上記のスクリプトをファイルに保存し、CLIを介してGroovyスクリプトとしてリモートで実行できます。

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

参照:
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI (CLI) http://javadoc.jenkins-ci.org/ハドソン (API)

16
http://[jenkins-server]/reload

Jenkinsの管理 から取得。

10
Andrew Ryapolov

Andreas Panagiotidis のアイデアを拡張して、単一のItemの構成をリロードするためのより簡単でクリーンな方法があります。

import jenkins.model.Jenkins;

def job_path = 'folder1/folder2/job_name'

Jenkins j = Jenkins.get()

def job = j.getItemByFullName(job_path)

if (job) {
  job.doReload()
}

パスは単に'job_name'である可能性があることに注意してください。

1
Waked