Имеется старый Jenkins с пачкой iOS джоб, которые надо перенести на новый сервер.
Документация предлагает:
Move a job from one installation of Jenkins to another by simply copying the corresponding job directory.
Т.е. вариант первый, самый простой — просто скопировать всю папку jobs
, или вложенных задач.
Недостаток (или преимущество, в зависимости от задачи) такого подхода — будет скопирована вся история билдов, логи, артефакты и прочее.
Другой вариант — с использованием Jenkins CLI, и позволяет создать точно такую же джобу — но «с нуля».
Jenkins CLI
Переходим в Manage Jenkins > Jenkins CLI, загружаем файл:
Копируем ссылку, загружаем:
[simterm]
$ sudo wget -O /usr/local/bin/jenkins-cli.jar https://jenkins.example.com/jnlpJars/jenkins-cli.jar
[/simterm]
Проверяем, в -auth
передаём логин:пароль или логин:api-токен, в -s
— URL хоста.
Тут запускаем локально, на старом CI, используя его jenkins-cli.jar
:
[simterm]
root@jenkins:/backups# java -jar /data/jenkins/war/WEB-INF/jenkins-cli.jar -auth user:pass -s http://localhost:8080/ version 2.89.4
[/simterm]
Импортируем джобу с именем Unit Test из папки iOS Projectname в файл Projectname_Unit_Test_job.xml
: с помощью cat
читаем содержимое файла, и через пайп |
— передаём данные в CLI:
[simterm]
root@jenkins:/backups# java -jar /data/jenkins/war/WEB-INF/jenkins-cli.jar -auth user:pass -s http://localhost:8080/ get-job 'iOS Projectname/Unit Test' > Projectname_Unit_Test_job.xml
[/simterm]
Проверяем файл:
[simterm]
root@jenkins:/backups# head Projectname_Unit_Test_job.xml <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description>Runs test, and delivers feedback to slack</description> <keepDependencies>false</keepDependencies> <properties> <com.coravy.hudson.plugins.github.GithubProjectProperty plugin="[email protected]"> <projectUrl>https://github.com/Projectname-dev/Projectname-iOS/</projectUrl> <displayName></displayName> </com.coravy.hudson.plugins.github.GithubProjectProperty>
[/simterm]
Загружаем на новый сервер в папку iOS Projectname:
[simterm]
root@jenkins:/backups# cat Projectname_Unit_Test_job.xml | java -jar /data/jenkins/war/WEB-INF/jenkins-cli.jar -auth user:pass -s https://ci.example.com create-job 'iOS Projectname/Unit Test'
[/simterm]
Проверяем:
Готово.