significado - ¿Cómo mover a Jenkins de una PC a otra?
jenkins significado (5)
Actualmente estoy usando Jenkins en mi PC de desarrollo. Lo instalé en mi PC de desarrollo porque tenía conocimiento limitado sobre esta herramienta; así que lo probé en mi PC de desarrollo. Ahora, me siento cómodo con Jenkins como mi "socio" a largo plazo en el proceso de construcción y me gustaría "mover" este Jenkins a un servidor dedicado.
Antes de esto, he realizado pocas compilaciones y he archivado los artefactos de cada compilación. En particular, el número de compilación es muy importante para mí para el control de versiones.
¿Cómo puedo exportar toda la información de Jenkins desde mi PC actual a mi nuevo servidor?
A veces puede que no tengamos acceso a la máquina Jenkins para copiar la carpeta directamente en otra instancia de jenkins. Así que escribí una utilidad impulsada por menús que utiliza las llamadas API REST de Jenkins para instalar complementos y trabajos desde una instancia de jenkins a otra.
Para la migración de complementos:
- Solicitud GET:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
obtendrá la lista de complementos instalados con su versión. puede enviar solicitud POST con los siguientes parámetros para instalar estos complementos.
final_url =
{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins
data =
<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>
(donde, latest buscará la última versión del plugin_name)auth =
(destination_jenkins_username, destination_jenkins_password)
header =
{crumb_field:crumb_value,"Content-Type":"application/xml”}
(donde crumb_field = Jenkins-Crumb y obtener el valor de la miga usando la llamada API {DESTINATION_JENKINS_SERVER} / crumbIssuer / api / json
Para la migración de trabajos:
- Puede obtener la lista de trabajos instalados en {SOURCE_JENKINS_URL} usando la llamada REST
{SOURCE_JENKINS_URL}/view/All/api/json
- A continuación, puede obtener cada archivo config.xml del trabajo de las tareas en {SOURCE_JENKINS_URL} con la URL del trabajo
{SOURCE_JENKINS_URL}/job/{JOB_NAME}
- Utilice este archivo config.xml para PUBLICAR el contenido del archivo xml en {DESTINATION_JENKINS_URL} y eso creará trabajo en {DESTINATION_JENKINS_URL}
He creado una utilidad guiada por menú en python que le pide al usuario que inicie la migración de plugins o jenkins y use las llamadas API REST de Jenkins para hacerlo.
Puede remitir el JenkinsMigration.docx de esta url jenkins jenkinsmigration jenkinsrestapi
En caso de que su directorio JENKINS_HOME sea demasiado grande para copiarlo , y todo lo que necesita es configurar los mismos trabajos, complementos de Jenkins y configuraciones de Jenkins (y no necesita antiguos artefactos y reportes de trabajo), entonces puede usar el complemento ThinBackup :
- Instale ThinBackup en los servidores Jenkins fuente y destino
Configure el Directorio de respaldo en ambos (en Administrar Jenkins -> ThinBackup -> Configuración)
En Sourse Jenkins, vaya a ThinBackup -> Copia de seguridad ahora
- Copie desde el directorio de Jenkins Source Backup al directorio de Jenkins Target Backup
- En Target Jenkins vaya a ThinBackup -> Restaurar, y luego reinicie el servicio de Jenkins.
Si faltan algunos complementos o trabajos, copie el contenido de la copia de seguridad directamente al JENKINS_HOME de destino.
Si tenía una autenticación de usuario en la fuente Jenkins, y ahora bloqueó Jenkins, edite Jenkins config.xml, establezca
<useSecurity>
en falso y reinicie Jenkins.
Esto funcionó para mí para pasar de Ubuntu 12.04 (Jenkins versión 1.628) a Ubuntu 16.04 (Jenkins versión 1.651.2). Primero instalé a Jenkins en los repositorios .
- Detenga ambos servidores Jenkins
Copie
JENKINS_HOME
(por ejemplo, / var / lib / jenkins) del servidor anterior al nuevo. Desde una consola en el nuevo servidor:rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
Puede que no necesites esto, pero tuve que
-
Manage Jenkins
yReload Configuration from Disk
. - Desconecte y conecte todos los esclavos nuevamente.
- Verifique que en la
Configure System > Jenkins Location
, laJenkins URL
esté asignada correctamente al nuevo servidor de Jenkins.
Siguiendo el wiki de Jenkins , tendrás que:
- instalar una jenkins fresca en el nuevo servidor
- Asegúrate de que las jenkins viejas y nuevas estén detenidas
- archivar todo el contenido de JENKINS_HOME de la antigua instancia de jenkins
- extraer el archivo en el nuevo directorio JENKINS_HOME
- lanzar el nuevo Jenkins
- no se olvide de cambiar la documentación / enlaces a su nueva instancia de Jenkins :)
- no olvides cambiar el propietario de los nuevos archivos de Jenkins:
chown -R jenkins:jenkins $JENKINS_HOME
EDITAR: JENKINS_HOME está por defecto en la instalación de Linux ubicada en ~/.jenkins
, aún para encontrar exactamente dónde está ubicado, vaya a la página http://your_jenkins_url/configure y verifique el valor del primer parámetro: Home directory
, esto es el JENKINS_HOME.
Automatización del servidor Jenkins:
Paso 1:
Configure un repositorio para almacenar Jenkins Home [Trabajos, Configuraciones, Complementos, etc.] en Git-lab local o en el repositorio privado de GitHub y manténgalo actualizado regularmente presionando cualquier cambio nuevo a Jenkins Jobs o Plugins, etc.
Paso 2:
Configure un grupo / rol de host de títere para Jenkins que pueda usarse para crear nuevos servidores Jenkins. Realice toda la configuración básica en una receta de títeres y asegúrese de que instala la última versión de Jenkins y configura un directorio / montaje independiente para JENKINS_HOME
Paso 3:
Haga girar una máquina nueva usando la configuración de Jenkins-marioneta arriba. Cuando todo esté instalado, tome / clone la configuración de Jenkins desde el repositorio de Git hasta el directorio de Jenkins Home y reinicie Jenkins.
Etapa 4:
Vaya a Jenkins URL, Administre Jenkins -> Administre complementos y actualice todos los complementos que requieren una actualización.
Hecho
Puede usar Docker Swarm o Kubernetes para escalar automáticamente los nodos Slave.