travis - jenkins tutorial
¿Cómo copio un trabajo de una instancia a otra? (8)
- Copie el trabajo en la carpeta existente
- Mueva el trabajo a la nueva carpeta
Estoy configurando un nuevo servidor para ejecutar Jenkins. Tengo un servidor Jenkins existente con trabajos en su lugar. Ahora, quiero copiar los trabajos desde la instancia anterior a la nueva instancia.
En la nueva instancia, estoy en la pantalla Nuevo trabajo. Noté que hay una opción de "copiar trabajo existente". Cuando puse el camino al trabajo en la instancia anterior, sigo obteniendo un error que dice "no hay tal trabajo en http://old-instance/job/jobName ".
¿Cómo puedo copiar un trabajo de una instancia a otra?
Hay al menos tres formas
- Copiar directorio de trabajos
- Use el complemento de importación https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin
- Use la CLI de Jenkins para enumerar los trabajos, obtener el trabajo xml y luego crear un trabajo en un nuevo servidor basado en el xml
Hay un plugin para hacer eso en línea sin copias de archivos (que también funciona): el plugin de importación de trabajos: https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin
Saludos
didier
Job Import Plugin es la forma más fácil de copiar trabajos de una instancia de jenkins a otra. Si eso no funciona debido a algunas preocupaciones de seguridad, puede copiar el directorio de trabajos completo de la instancia de jenkins a la nueva instancia de jenkins. Los trabajos están presentes en {Jenkins_Home} / jobs .. en el servidor.
Una vez que haya terminado con la copia, simplemente vuelva a cargar la configuración en la nueva instancia. Puedes volver a cargarlo desde Jenkins-> Gestionar Jenkins-> Volver a cargar la configuración desde el disco
Una vez que se completa la recarga, puede ver sus trabajos. :)
Según el manual, https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins , es simplemente mover el directorio de trabajo correspondiente a la nueva instancia de Jenkins.
La opción "Copiar trabajo existente" requiere que el trabajo exista en la instancia actual de Jenkins. Es una opción para usar el trabajo existente como plantilla. No se puede usar para mover trabajos entre instancias.
Solo necesita crear un directorio con el mismo nombre que el trabajo y copiar el archivo config.xml del Jenkins original.
Solo tenga cuidado, si necesita conservar la numeración de la compilación, deberá copiar el número en el archivo de compilación, y tenga cuidado si tiene diferentes complementos en ambos servidores de Jenkins, como dice @LeeMeador en sus comentarios.
También puede hacer esto en la línea de comando:
- Reúna tokens de API de autenticación de las dos instancias de jenkins para su usuario:
http://<jenkins-server>/user/<username>/configure
- Comando
curl -k -s http://<user>:<token>@OLD_JENKINS/job/JOBNAME/config.xml | curl -k -X POST https://<user>:<token>@http://NEW_JENKINS/createItem?name=JOBNAME --header "Content-Type: application/xml" -d @-
para crear un trabajo en la nueva instancia a partir de la configuración de la instancia anterior:curl -k -s http://<user>:<token>@OLD_JENKINS/job/JOBNAME/config.xml | curl -k -X POST https://<user>:<token>@http://NEW_JENKINS/createItem?name=JOBNAME --header "Content-Type: application/xml" -d @-
curl -k -s http://<user>:<token>@OLD_JENKINS/job/JOBNAME/config.xml | curl -k -X POST https://<user>:<token>@http://NEW_JENKINS/createItem?name=JOBNAME --header "Content-Type: application/xml" -d @-
(cortesía de https://.com/a/30575318/3891027 )
Utilicé Perl para automatizar tales procesos usando la CLI (vaya a $ jenkins_URL / cli / y descargue el Jenkins-cli.jar) (la secuencia de comandos cambió a su escenario)
Es importante asegurarse de tener instalados todos los complementos necesarios en su nuevo Jenkins, de lo contrario, ningún método de migración funcionará ...
my $newJobPrefix = "New_Jenkins";
my $jobPrefix = "Old_Jenkins";
my $result = `"$java" -jar old-jenkins-cli.jar -noKeyAuth -s $jenkins_URL list-jobs All`;
@jobList = split("/n", $result);
foreach my $job (@jobList)
{
# ---- Getting configuration of jobs ----
print "Getting config for: $job /n";
my $config = `"$java" -jar $jenkinsJar -noKeyAuth -s $jenkins_URL get-job $job`;
my $file = "$jobPrefix//$job.xml";
unless(open FILE, ''>'', $file) {die "Unable to open $file";}
print FILE $config;
close FILE;
# ---- Adding Job to new Jenkins ----
my $result = `"$java" -jar new-jenkins-cli.jar -noKeyAuth -s $New_jenkins_URL create-job $job< $file`;
}
¡Buena suerte!