¿Hay alguna forma de mantener los files de configuration de Hudson / Jenkins en control de fuente?

Soy nuevo en Hudson / Jenkins y me preguntaba si existe alguna manera de verificar en los files de configuration de Hudson el control de origen.

Idealmente, quiero poder hacer clic en algún button en la interfaz de usuario que dice 'save configuration' y tener los files de configuration de Hudson registrados en el control de código fuente.

La respuesta más útil

Hay un complemento llamado complemento de configuration SCM Sync .


Respuesta original

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

EDITAR: Si encuentra una forma de determinar el cambio para el usuario, infórless.

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

Tenga en count 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 count que el complemento de configuration SCM Sync puede generar una gran cantidad de confirmaciones.
Por lo tanto, en lugar de depender de un complemento y un process automatizado, administra la misma function 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 save solo la información del trabajo y no la configuration de Jenkins.
Para este cambio en su directory de trabajos de Jenkins (Ubuntu: /var/lib/jenkins/jobs ) y ejecute el command " git init ".

.gitignore el siguiente file .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 repository de Git, puede enviar su configuration a otro server.

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 )

Para administrar manualmente su configuration con Git, el siguiente file .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 get más detalles.

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 files config.xml (y otros resources) hudson con un repository SCM
  • Controle los cambios (y el autor) realizados en cada file con posts de confirmación

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

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

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

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

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

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

La respuesta de Mark ( http://sofes.miximages.com/a/4066654/142207 ) debería funcionar para SVN y Git (aunque la configuration 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 fill_in_the@blank.com hg push fi 

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 configuration se registran y puede probar la testing 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 configuration de entrega continua hudson en el trabajo.

Saludos Morten

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

 script: - make - make test 

y Jenkins lo hará:

enter image description here

Puede encontrar files de configuration en la carpeta de inicio de Jenkins (por ejemplo, /var/lib/jenkins ).

Para mantenerlos en VCS, primero inicie session como Jenkins ( sudo su - jenkins ) y cree sus cnetworkingenciales de git:

 git config --global user.name "Jenkins" git config --global user.email "jenkins@example.com" 

A continuación, inicialice, agregue y confirme los files 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 files 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 files de configuration 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 file si es necesario, luego empújelo al repository remoto donde desea mantener los files de configuration.


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