Подтвердить что ты не робот

Как перезагрузить конфигурацию hudson без перезагрузки?

У меня впереди большая задача... изменение конфигурации хадсонских заданий. Я хотел бы сделать это из командной строки. Но по моему опыту, hudson не будет перечитывать конфигурацию, если вы не заставите ее "перезагрузить конфигурацию с диска".

Я не хочу перезапускать hudson только для небольшого изменения... например, делать "перезагрузку" в apache. Не знаю, как читать Java-код, но я предполагаю, что то, что я ищу, лежит в части после сохранения изменений конфигурации.

4b9b3361

Ответ 1

Хадсон/Дженкинс сохраняет конфигурацию времени выполнения в памяти и перезагружает ее при запуске или когда вы "перезагружаете конфигурацию с диска".

Однако перезагрузить конфигурацию с диска не является перезагрузкой, просто перечитайте конфигурацию.

Это все ваши варианты, перезагрузка или перезагрузка.

Взлом на работу по-разному будет главной задачей, и если вы еще не можете прочитать код Java, я бы не советовал вам писать его. Эффективно вам также нужно будет работать с основным проектом, поэтому обновления не будут совместимы.

Если вам нужно сделать все обновления с помощью script, а затем автоматически перезагрузить конфигурацию, используйте hudson_cli.jar для сделайте это.

Ответ 2

Вот как перезагрузить задание в Jenkins без перезагрузки или перезагрузки полной конфигурации с помощью groovy. Вы также можете легко изменить script и перезагрузить некоторые конкретные или все задания Jenkins без перезагрузки.

Jenkins позволяет запускать script через пользовательский интерфейс или CLI.

UI: скопируйте следующий script на страницу Jenkins script, например 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. Вы можете сохранить вышеуказанный script в файле и выполнить его удаленно через CLI как groovy script:

 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/hudson (API)

Ответ 4

Продолжая идею Андреаса Панайотидиса, теперь существует более простой и понятный способ перезагрузить конфигурацию одного 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'.