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.)