Est-il un moyen de conserver les fichiers de configuration Hudson / Jenkins dans le contrôle de la source?

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

Question

Je suis nouveau à Hudson / Jenkins et je me demandais s'il y a un moyen de vérifier dans les fichiers de configuration d'Hudson au contrôle de source.

Idéalement je veux être en mesure de cliquer appuyer sur un bouton dans l'interface utilisateur qui dit « enregistrer la configuration » et que les fichiers de configuration Hudson vérifiés pour le contrôle des sources.

Était-ce utile?

La solution

réponse la plus utile

Il y a un plugin appelé SCM Sync configuration plug-in .


Réponse originale

Jetez un oeil à ma réponse à une question similaire. L'idée de base est d'utiliser le système de fichiers-scm-plugin détecter les modifications apportées aux fichiers xml. Votre deuxième partie commettrait les modifications SVN.

EDIT:. Si vous trouvez un moyen de déterminer l'utilisateur pour un changement, laissez-nous savoir

EDIT 2011-01-10 Pendant ce temps il y a un nouveau plugin: SCM Sync configuration plug-in . Actuellement, il fonctionne uniquement avec la subversion et git, mais le soutien pour plus de dépôts est prévu. Je l'utilise depuis la version 0.0.3 et cela a fonctionné bien jusqu'à présent.

Autres conseils

Notez que Vogella a récemment (Janvier 2014, par rapport à la question de l'OP Janvier 2010) et différent sur ce sujet.
Tenir compte que la SCM configuration plug-in Sync peut générer beaucoup de engage.
Ainsi, au lieu de se fier à un plug-in et un processus automatisé, il gère la même fonction manuellement:

Stockage du travail informations de Jenkins dans Git

  

J'ai trouvé le montant de commits un peu écrasante, alors j'ai décidé de contrôler les commits manuellement et enregistrer uniquement les informations d'un emploi et la configuration Jenkins.
  Pour ce commutateur dans votre répertoire d'emplois Jenkins. (Ubuntu: /var/lib/jenkins/jobs) et exécuter la commande « git init »

     

J'ai créé le fichier .gitignore suivant pour stocker uniquement les informations de l'emploi Git:

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

Maintenant, vous pouvez ajouter et valider les modifications à votre propre volonté.
  Et si vous ajoutez un autre à distance à votre dépôt Git vous pouvez pousser votre configuration vers un autre serveur.

Alberto recommande en fait d'ajouter aussi bien (en $JENKINS_HOME):

  • config propre jenkins (config.xml),
  • les plugins jenkins configs (hudson*.xml) et
  • les utilisateurs configs (users/*/config.xml)

Pour gérer manuellement la configuration avec Git, le fichier .gitignore suivant peut être utile.

# 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

Voir ce GitHub Gist et ce blog pour plus de détails.

Il existe une nouvelle plug-in SCM Sync Configuration qui fait exactement ce que vous recherchez.

  

SCM Sync Configuration plug-in Hudson   vise à 2 caractéristiques principales:

     
      
  • Garder votre sync'ed config.xml (et d'autres ressources) fichiers hudson avec   SCM référentiel
  •   
  • Suivi des modifications (et auteur) effectués sur tous les fichiers avec commits
  •   

Je ne l'ai pas fait encore essayé, mais il semble prometteur.

Vous pouvez trouver les fichiers de configuration dans Jenkins dossier personnel (par exemple /var/lib/jenkins).

Pour les garder à l'VCS, la première connexion comme Jenkins (sudo su - jenkins) et de créer ses lettres de noblesse git:

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

initialiser Ensuite, ajouter et valider les fichiers de base tels que:

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

également envisager la création .gitignore avec les fichiers suivants à ignorer (personnaliser selon les besoins):

# 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

Puis ajoutez: git add .gitignore

.

Lorsque vous avez terminé, vous pouvez ajouter des fichiers de configuration d'emploi, par exemple.

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

Enfin ajouter et engager tout autre fichier si nécessaire, puis le pousser vers le dépôt distant où vous souhaitez conserver les fichiers de configuration.


Lorsque des fichiers Jenkins sont mis à jour, vous devez les recharger ( Recharger la configuration à partir du disque ) ou exécuter reload-configuration de Jenkins CLI.

La façon dont je préfère est d'exclure tout dans le dossier de Jenkins sauf les fichiers de configuration que vous voulez vraiment être dans votre VCS. Voici le fichier .gitignore J'utilise:

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

ignore tout (*) sauf (!) .gitignore lui-même, les emplois / projets, le plug-in et d'autres fichiers de configuration et de l'utilisateur.

Il est également utile d'envisager d'inclure le dossier plugins. Fâcheusement plugins mis à jour devraient être inclus ...

Fondamentalement, cette solution rend plus facile pour les mises à jour futures Jenkins / Hudson parce que les nouveaux fichiers ne sont pas automatiquement portée. Vous obtenez juste sur le screeen ce que vous voulez vraiment.

Une .gitignore plus précise, inspirée par la réponse de NEPA :

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

Il ignore tout sauf les fichiers de configuration de .xml et .gitignore lui-même. (La différence NEPA .gitignore de est qu'il n'a pas « » tous les répertoires plus ignorer haut niveau (!*/) comme logs/, cache/, etc.)

Réponse de Mark ( https://stackoverflow.com/a/4066654/142207 ) devraient travailler pour SVN et Git (bien que la configuration Git ne fonctionne pas pour moi).

Mais si vous en avez besoin pour travailler avec repo Mercurial, créez un emploi avec le script suivant:

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

J'ai écrit plugin qui vous permet de vérifier vos instructions Jenkins dans le contrôle source. Il suffit d'ajouter un fichier .jenkins.yml avec le contenu:

script:
    - make
    - make test

et Jenkins fera:

entrer image description ici

Je suis arrivé hudson entièrement, vous pouvez l'utiliser comme point de départ https: // github.com/morkeleb/continuous-delivery-with-hudson

Il y a des avantages à garder hudson entière dans git. Tous les changements de configuration sont enregistrées et vous pouvez tester la testup sur une machine assez facilement et puis mettre à jour l'autre machine (s) à l'aide git pull.

Nous avons utilisé cela comme un passe-partout pour notre configuration de livraison continue hudson au travail.

Cordialement Morten

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top