Экспорт / импорт рабочих мест в Дженкинс - PullRequest
250 голосов
/ 08 декабря 2011

Можно ли обмениваться вакансиями между двумя разными Дженкинсом?Я ищу способ экспорта / импорта рабочих мест.

Ответы [ 17 ]

1 голос
/ 06 августа 2017

Очень просто скачать название плагина

Плагин для импорта вакансий

Введите URL-адрес вашего удаленного сервера Jenkins, и он автоматически импортирует задания

1 голос
/ 24 мая 2017

Для тех из нас в мире Windows, кто может иметь или не иметь доступ к Bash, вот мой порт PowerShell для Katu и Larry Cai . Надеюсь, это кому-нибудь поможет.

##### Config vars #####
$serverUri = 'http://localhost:8080/' # URI of your Jenkins server
$jenkinsCli = 'C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar' # Path to jenkins-cli.jar on your machine
$destFolder = 'C:\Jenkins Backup\' # Output folder (will be created if it doesn't exist)
$destFile = 'jenkins-jobs.zip' # Output filename (will be overwritten if it exists)
########################

$work = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName())
New-Item -ItemType Directory -Force -Path $work | Out-Null # Suppress output noise
echo "Created a temp working folder: $work"

$jobs = (java -jar $jenkinsCli -s $serverUri list-jobs)
echo "Found $($jobs.Length) existing jobs: [$jobs]"

foreach ($j in $jobs)
{
    $outfile = Join-Path $work "$j.xml"
    java -jar $jenkinsCli -s $serverUri get-job $j | Out-File $outfile
}
echo "Saved $($jobs.Length) jobs to temp XML files"

New-Item -ItemType Directory -Force -Path $destFolder | Out-Null # Suppress output noise
echo "Found (or created) $destFolder folder"

$destPath = Join-Path $destFolder $destFile
Get-ChildItem $work -Filter *.xml | 
    Write-Zip -Level 9 -OutputPath $destPath -FlattenPaths |
    Out-Null # Suppress output noise
echo "Copied $($jobs.Length) jobs to $destPath"

Remove-Item $work -Recurse -Force
echo "Removed temp working folder"
1 голос
/ 29 мая 2015

Это не работает для существующих заданий, однако есть Конструктор заданий Jenkins .

Это позволяет сохранять определения заданий в файлах yaml и в репозитории git, который очень переносим.

1 голос
/ 02 февраля 2015

Простой скрипт php работал для меня.

Экспорт:

// add all job codes in the array
$jobs = array("job1", "job2", "job3");

foreach ($jobs as $value)
{
    fwrite(STDOUT, $value. " \n") or die("Unable to open file!");
    $path = "http://server1:8080/jenkins/job/".$value."/config.xml";
    $myfile = fopen($value.".xml", "w");
    fwrite($myfile, file_get_contents($path));
    fclose($myfile);
}

Импорт:

<?php

// add all job codes in the array
$jobs = array("job1", "job2", "job3");

foreach ($arr as $value)
{
    fwrite(STDOUT, $value. " \n") or die("Unable to open file!");
    $cmd = "java -jar jenkins-cli.jar -s http://server2:8080/jenkins/ create-job ".$value." < ".$value.".xml";
    echo exec($cmd);
}
0 голосов
/ 23 января 2019

Как веб-пользователь, вы можете экспортировать, перейдя в «Журнал заданий» и затем экспортировав XML.

Я нахожусь в ситуации, когда у меня нет доступа к машине, на которой работает Jenkins, и хотел экспортировать какрезервное копирование.

Что касается импорта XML как веб-пользователя, я все еще хотел бы знать.

0 голосов
/ 16 декабря 2018

По умолчанию это значение равно ~ / .jenkins, но вы можете изменить это одним из следующих способов:

* Set "JENKINS_HOME" environment variable to the new home directory before launching 
the servlet container.
* Set "JENKINS_HOME" system property to the servlet container.
* Set JNDI environment entry "JENKINS_HOME" to the new directory.

См. Документацию для конкретного контейнера.сборник, чтобы узнать больше о том, как сделать это для вашего контейнера.

Вы также можете изменить это местоположение после того, как некоторое время пользовались Jenkins.Для этого полностью остановите Jenkins, переместите содержимое из старого JENKINS_HOME в новый дом, установите новый JENKINS_HOME и перезапустите Jenkins.

JENKINS_HOME имеет довольно очевидную структуру каталогов, которая выглядит следующим образом:

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)  
 +- userContent    (files in this directory will be served under your 
 http://server/userContent/)  
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
 +- [JOBNAME]      (sub directory for each job)
     +- config.xml     (job configuration file)
     +- latest         (symbolic link to the last successful build)
     +- builds
         +- [BUILD_ID]     (for each build)
             +- build.xml      (build result summary)
             +- log            (log file)
             +- changelog.xml  (change log)

Резервное копирование и восстановление:

Все настройки, журналы сборки, архивы артефактов хранятся в каталоге JENKINS_HOME.Просто заархивируйте этот каталог, чтобы сделать резервную копию.Точно так же восстановление данных - это просто замена содержимого каталога JENKINS_HOME из резервной копии.

Резервные копии можно создавать без остановки сервера, но при восстановлении остановите сервер.

Перемещение / копирование / переименование заданий

Вы можете:

  1. Переместить задание из одной установки Jenkins в другую, просто скопировав соответствующий каталог заданий.
  2. Сделайте копию существующего задания, сделав клон каталога заданий под другим именем.
  3. Переименуйте существующее задание, переименовав каталог.Обратите внимание, что если вы меняете имя задания, вам нужно будет поменять любое другое задание, которое пытается вызвать переименованное задание.

Эти операции можно выполнять даже во время работы Jenkins.Чтобы изменения, подобные этим, вступили в силу, необходимо нажать «reload config», чтобы заставить Jenkins перезагрузить конфигурацию с диска.

Пакетное переименование заданий

Замена пробелов вимена заданий с подчеркиванием

$ rename 's/\s/_/g' *

Архивировать неиспользуемые задания

Иногда вам нужно удалить задание из Jenkins, но сделать это таким образом, чтобы вы могли воскресить его позже, если возникнет необходимость.Вы можете сделать это, перейдя в $ JENKINS_HOME и создать архив каталога заданий.Следующая команда иллюстрирует, как заархивировать задание 'xyz' и удалить его.

$ cd $JENKINS_HOME/jobs
$ tar czf xyz.tgz xyz
// go to Jenkins GUI "Manage Jenkins" page and "Reload Configuration from Disk"

Пока вы не создаете проект xyz при создании архива, вы можете выполнять эту операцию, не переводя Jenkins в автономный режим.

См. Также плагин "Проект полки" .

Консоль сценариев

Полезно для устранения неполадок, диагностики илиПакетное обновление заданий Jenkins предоставляет консоль сценария, которая дает вам доступ ко всем внутренним компонентам Jenkins.Эти сценарии написаны на Groovy, и вы найдете несколько примеров их на этой странице .

Параметры URL

http://[jenkins-server]/[command]

где [команда] может быть

  1. завершение работы jenkins
  2. перезапуск перезапуск jenkins
  3. перезагрузка для перезагрузки конфигурации
0 голосов
/ 13 апреля 2018

Импортирование заданий вручную: альтернативный способ

Загрузка заданий в Git (контроль версий) В основном выгрузите файл config.xml задания.

Если серверы Linux:

cd /var/lib/jenkins/jobs/<Job name> 
Download the config.xml from Git

Перезагрузите Jenkins

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...