私の前には大きな課題があります...いくつかのハドソンジョブの構成を変更します。私がしたいのは、コマンドラインからそれを行うことです。しかし、私の経験によれば、ハドソンは、「ディスクから構成を再ロード」するように強制しない限り、構成を再読み取りしません。
Apacheで「リロード」を実行するなど、小さな変更のためだけにハドソンを再起動したくありません。 Javaコードの読み方がわかりませんが、構成の変更を保存した後の部分に私が探しているものがあると思います。
Hudson/Jenkinsは、ランタイム構成をメモリに保持し、起動時または「ディスクから構成を再ロード」するときにのみ再ロードします。
ただし、ディスクから構成を再ロードは再起動ではなく、構成を再読み取りするだけです。
リロードするか再起動するかは、これですべてです。
別の方法で動作するようにハッキングするのは大きな作業であり、まだreadJavaコードがない場合は、お勧めしません事実上、メインプロジェクトからもフォークする必要があるため、更新に互換性がありません。
スクリプトを介してすべての更新を実行してから、構成を自動再ロードする必要がある場合は、 hudson_cli.jar
それをする。
これが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)
http://[jenkins-server]/reload
Jenkinsの管理 から取得。
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'
である可能性があることに注意してください。