version-control hudson jenkins jenkins-plugins

version control - ¿Hay alguna forma de mantener los archivos de configuración de Hudson/Jenkins en control de fuente?



version-control jenkins-plugins (10)

La respuesta más útil

Hay un complemento llamado complemento de configuración SCM Sync .

Respuesta original

Eche un vistazo a mi respuesta a una pregunta similar. La idea básica es usar el filesystem-scm-plugin para detectar cambios en los archivos xml. Su segunda parte estaría cometiendo los cambios a SVN.

EDITAR: si encuentra una forma de determinar el cambio para el usuario, infórmenos.

EDITAR 2011-01-10 Mientras tanto, hay un nuevo complemento: complemento de configuración SCM Sync . Actualmente solo funciona con subversion y git, pero se planea el soporte para más repositorios. Lo estoy usando desde la versión 0.0.3 y funcionó bien hasta ahora.

Soy nuevo en Hudson / Jenkins y me preguntaba si existe alguna manera de verificar en los archivos de configuración de Hudson el control de origen.

Idealmente, quiero poder hacer clic en algún botón en la interfaz de usuario que dice ''guardar configuración'' y tener los archivos de configuración de Hudson registrados en el control de código fuente.


Hay un nuevo complemento SCM Sync Configuration que hace exactamente lo que está buscando.

Configuración SCM Sync El complemento Hudson está dirigido a 2 características principales:

  • Mantenga sincronizados sus archivos config.xml (y otros recursos) hudson con un repositorio SCM
  • Controle los cambios (y el autor) realizados en cada archivo con mensajes de confirmación

No he probado esto todavía, pero parece prometedor.


He escrito un complemento que le permite verificar sus instrucciones de Jenkins en el control de la fuente. Simplemente agregue un archivo .jenkins.yml con los contenidos:

script: - make - make test

y Jenkins lo hará:


La forma en que prefiero es excluir todo en la carpeta de inicio de Jenkins, excepto los archivos de configuración que realmente desea que estén en su VCS. Aquí está el archivo .gitignore que uso:

* !.gitignore !/jobs/*/*.xml !/*.xml !/users/*/config.xml !*/

Esto ignora todo ( * ) excepto ( ! ) .gitignore sí mismo, los trabajos / proyectos, el complemento y otros archivos importantes de configuración de usuario.

También vale la pena considerar incluir la carpeta de plugins . Se deben incluir complementos molestos y actualizados ...

Básicamente, esta solución facilita las futuras actualizaciones de Jenkins / Hudson porque los nuevos archivos no tienen alcance automáticamente. Usted acaba de obtener lo que realmente desea.


La respuesta de Mark ( https://.com/a/4066654/142207 ) debería funcionar para SVN y Git (aunque la configuración de Git no funcionó para mí).

Pero si lo necesita para trabajar con repo Mercurial, cree un trabajo con el siguiente script:

hg remove -A || true hg add ../../config.xml hg add ../../*/config.xml if [ ! -z "`hg status -admrn`" ]; then hg commit -m "Scheduled commit" -u [email protected] hg push fi


Para administrar manualmente su configuración con Git, el siguiente archivo .gitignore puede ser útil.

# Miscellaneous Hudson litter *.log *.tmp *.old *.bak *.jar *.json # Generated Hudson state /.owner /secret.key /queue.xml /fingerprints/ /shelvedProjects/ /updates/ # Tools that Hudson manages /tools/ # Extracted plugins /plugins/*/ # Job state builds/ workspace/ lastStable lastSuccessful nextBuildNumber

Consulte https://gist.github.com/780105 y http://bit.ly/i58rg2 para obtener más detalles.


Puede encontrar archivos de configuración en la carpeta de inicio de Jenkins (por ejemplo, /var/lib/jenkins ).

Para mantenerlos en VCS, primero inicie sesión como Jenkins ( sudo su - jenkins ) y cree sus credenciales de git:

git config --global user.name "Jenkins" git config --global user.email "[email protected]"

A continuación, inicialice, agregue y confirme los archivos básicos, como:

git init git add config.xml jobs/ .gitconfig git commit -m''Adds Jenkins config files'' -a

También considere crear .gitignore con los siguientes archivos para ignorar (personalizar según sea necesario):

# Git untracked files to ignore. # Site-wide configuration files. *.xml # Except root configuration. !config.xml # Cache. .cache/ # Fingerprint records. fingerprints/ # Working directories. workspace/ # Secret files. secrets/ secret.* *.enc *.key users/ id_rsa # Plugins. plugins/ # State files. *.state # Job state files. builds/ lastStable lastSuccessful nextBuildNumber # Updates. updates/ # Hidden files. .* # Except git config files. !.git* !.ssh/ # User content. userContent/ # Log files. logs/ *.log # Miscellaneous litter *.tmp *.old *.bak *.jar *.json *.lastExecVersion

Luego git add .gitignore : git add .gitignore .

Cuando haya terminado, puede agregar archivos de configuración de trabajo, por ejemplo

shopt -s globstar git add **/config.xml git commit -m''Added job config files'' -a

Finalmente agregue y confirme cualquier otro archivo si es necesario, luego empújelo al repositorio remoto donde desea mantener los archivos de configuración.

Cuando los archivos de Jenkins se actualizan, debe volver a cargarlos (volver a cargar la configuración desde el disco ) o ejecutar reload-configuration de reload-configuration desde Jenkins CLI.


Revisé completamente Hudson, podría usar esto como punto de partida https://github.com/morkeleb/continuous-delivery-with-hudson

Hay beneficios para mantener todo Hudson en git. Todos los cambios de configuración se registran y puede probar la prueba con bastante facilidad en una máquina y luego actualizar la otra máquina (s) usando git pull.

Usamos esto como una repetición estándar para nuestra configuración de entrega continua hudson en el trabajo.

Saludos Morten


Tenga en cuenta que Vogella tiene un reciente (enero de 2014, en comparación con la pregunta de OP de enero de 2010) y diferentes puntos de vista sobre esto.
Tenga en cuenta que el complemento de configuración SCM Sync puede generar una gran cantidad de confirmaciones.
Por lo tanto, en lugar de depender de un complemento y un proceso automatizado, administra la misma función de forma manual:

Almacenar la información del trabajo de Jenkins en Git

La cantidad de confirmaciones fue un poco abrumadora, así que decidí controlar las confirmaciones manualmente y guardar solo la información del trabajo y no la configuración de Jenkins.
Para este cambio en su directorio de trabajos de Jenkins (Ubuntu: /var/lib/jenkins/jobs ) y ejecute el comando " git init ".

.gitignore el siguiente archivo .gitignore para almacenar solo la información de trabajos de Git:

builds/ workspace/ lastStable lastSuccessful nextBuildNumber modules/ *.log

Ahora puede agregar y confirmar cambios por su propia voluntad.
Y si agrega otro control remoto a su repositorio de Git, puede enviar su configuración a otro servidor.

Alberto realmente recomienda agregar también (en $JENKINS_HOME ):

  • jenkins own config ( config.xml ),
  • los complementos jenkins configs ( hudson*.xml ) y
  • las configuraciones de los usuarios ( users/*/config.xml )

Un .gitignore más preciso, inspirado en la respuesta de :

* !.gitignore !/jobs/ !/jobs/*/ /jobs/*/* !/jobs/*/config.xml !/users/ !/users/*/ /users/*/* !/users/*/config.xml !/*.xml

Ignora todo excepto los .xml configuración .xml y .gitignore sí mismo. (La diferencia con .gitignore es que no "desactiva" todos los directorios de nivel superior ( !*/ ) como logs/ , cache/ , etc.)