Es allí una manera de mantener Hudson / Jenkins archivos de configuración en el control de código fuente?

StackOverflow https://stackoverflow.com/questions/2087142

Pregunta

Soy nuevo en Hudson / Jenkins y me preguntaba si hay una forma de comprobar Hudson en los archivos de configuración de control de código fuente.

Idealmente quiero ser capaz de hacer click en algún botón en la interfaz de usuario que dice "guardar configuración" y tienen el Hudson archivos de configuración marcada en control de código fuente.

¿Fue útil?

Solución

La mayoría de Responder de manera útil

Hay un plugin llamado SCM Sincronización de configuración del plugin.


Respuesta Original

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

EDITAR: Si usted encuentra una manera de determinar el usuario para un cambio, háganoslo saber.

EDITAR 2011-01-10 Mientras tanto, hay un nuevo plugin: SCM Sincronización de configuración del plugin.Actualmente sólo funciona con subversion y git, pero el apoyo más repositorios está previsto.La estoy usando desde la versión 0.0.3 y ha funcionado bien hasta ahora.

Otros consejos

Tenga en cuenta que Vogella tiene una reciente (enero de 2014, en comparación a la pregunta del OP enero de 2010) y diferente sobre esto.
Consideramos que el SMC sincronización de configuración del plugin puede generar una gran cantidad de se compromete.
Así, en lugar de depender de un plugin y un proceso automatizado, que gestiona la misma característica manualmente:

Almacenamiento del Trabajo información de Jenkins en Git

  

He encontrado la cantidad de confirmaciones un poco abrumador, así que decidí controlar las confirmaciones de forma manual y para guardar sólo la información de empleo y no la configuración de Jenkins.
  Para este interruptor en su directorio de trabajos Jenkins. (Ubuntu: /var/lib/jenkins/jobs) y ejecutar el comando “git init

     

He creado el siguiente archivo de .gitignore para almacenar sólo la información de puestos de trabajo Git:

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

Ahora se puede añadir y confirmar los cambios a su propia voluntad.
  Y si se agrega otro control remoto a su repositorio Git puede llevar a su configuración a otro servidor.

Alberto recomiendan realmente añadir también (en $JENKINS_HOME):

  • Jenkins propia configuración (config.xml),
  • The Jenkins plugins configuraciones (hudson*.xml) y
  • los usuarios configuraciones (users/*/config.xml)

Para administrar manualmente la configuración con Git, el siguiente archivo de .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

este GitHub Gist y esta entrada de blog para más detalles.

Hay una nueva configuración de sincronización SMC plug-in , que hace exactamente lo que busca.

  

SMC complemento de sincronización de configuración Hudson   está dirigido a 2 características principales:

     
      
  • Mantenga su sync'ed config.xml (y otros) Recursos archivos Hudson con una   repositorio SCM
  •   
  • Control de cambios (y autor) realizados en cada archivo con cometer mensajes
  •   

No he intentado realmente esto todavía, pero parece prometedor.

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

Para mantenerlos en VCS, primero registrado como Jenkins (sudo su - jenkins) y crear sus credenciales git:

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

A continuación, inicializar, añadir y cometer los archivos básicos tales como:

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

también considerar la creación de .gitignore con los siguientes archivos de ignorar (personalizar según sea necesario):

# Git untracked files to ignore.

# 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

A continuación, agregarlo: 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

Por último agregar y cometer cualquier otro archivo, si es necesario, hasta que quede al repositorio remoto en el que desea guardar los archivos de configuración.


Cuando se actualizan los archivos de Jenkins, es necesario volver a cargarlos ( Configuración Volver a cargar en el disco ) o reload-configuration ejecutar desde Jenkins CLI.

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

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

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

También vale la pena considerar para incluir la carpeta plugins. Molestamente plugins actualizados deben ser incluidos ...

Básicamente esta solución hace que sea más fácil para futuras actualizaciones Jenkins / Hudson porque los nuevos archivos no son automáticamente en su alcance. Que acaba de obtener en el screeen lo que realmente quiere.

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

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

Se ignora todo excepto los ficheros de configuración y .xml .gitignore sí. (La diferencia a nepa 's .gitignore es que no todos los directorios de nivel superior 'Desactivar'(!*/) como logs/, cache/, etc.)

Respuesta de Marcos ( https://stackoverflow.com/a/4066654/142207 ) debe trabajar para SVN y Git (aunque la configuración de Git no funcionó para mí).

Pero si lo necesita para trabajar con repo Mercurial, crear un trabajo con la siguiente secuencia de comandos:

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

He escrito un plug-in que le permite comprobar sus instrucciones Jenkins en control de código fuente. Sólo tiene que añadir un archivo .jenkins.yml con el contenido:

script:
    - make
    - make test

y Jenkins lo hará:

introducir descripción de la imagen aquí

Me registré Hudson en su totalidad, podría utilizar esto como punto de partida https: // github.com/morkeleb/continuous-delivery-with-hudson

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

Lo utilizamos como un texto modelo para nuestra configuración de la entrega continua de Hudson en el trabajo.

Saludos Morten

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top