Je suis nouvelle dans Hudson/Jenkins et je me demandais s’il existe un moyen de vérifier les fichiers de configuration de Hudson pour le contrôle de source.
Idéalement, je souhaite pouvoir cliquer sur un bouton de l'interface utilisateur qui dit "enregistrer la configuration" et faire en sorte que les fichiers de configuration de Hudson soient archivés dans le contrôle de source.
Il existe un plugin appelé plugin de configuration SCM Sync .
Regardez ma réponse à une question similaire. L'idée de base est d'utiliser filesystem-scm-plugin pour détecter les modifications apportées aux fichiers xml. Votre deuxième partie serait de valider les modifications apportées à SVN.
EDIT: Si vous trouvez un moyen de déterminer l'utilisateur pour un changement, faites-le nous savoir.
EDIT 2011-01-10 En attendant, un nouveau plugin existe: plugin de configuration SCM Sync . Actuellement, cela ne fonctionne qu'avec Subversion et git, mais un support pour plusieurs référentiels est prévu. Je l'utilise depuis la version 0.0.3 et cela a bien fonctionné jusqu'à présent.
Notez que Vogella a une opinion récente (janvier 2014, comparée à la question du PO, janvier 2010) et différente.
Considérons que le plug-in de configuration de SCM Sync peut générer un grand nombre de commits .
Ainsi, au lieu de s’appuyer sur un plugin et un processus automatisé, il gère manuellement la même fonctionnalité:
J'ai trouvé le montant des commits un peu écrasant. J'ai donc décidé de contrôler les commits manuellement et de ne sauvegarder que les informations de tâche et non la configuration de Jenkins.
Pour ce commutateur dans votre répertoire de travaux Jenkins (Ubuntu:/var/lib/jenkins/jobs
) et exécutez le “git init
”Commande.J'ai créé le
.gitignore
fichier pour stocker uniquement les informations sur les travaux Git:
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log
Vous pouvez maintenant ajouter et valider des modifications à votre guise.
Et si vous ajoutez une autre télécommande à votre référentiel Git, vous pouvez transférer votre configuration sur un autre serveur.
Alberto recommande en fait d’ajouter aussi (dans $JENKINS_HOME
):
config.xml
),hudson*.xml
) etusers/*/config.xml
)Pour gérer manuellement votre 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 this GitHub Gist et cet article de blog pour plus de détails.
Il existe un nouveau plug-in SCM Sync Configuration qui fait exactement ce que vous recherchez.
Le plugin Hudson Configuration de SCM Sync est destiné à 2 fonctionnalités principales:
- Gardez synchronisé vos fichiers hudson config.xml (et autres ressources) avec un référentiel SCM
- Suivre les modifications (et l'auteur) effectuées sur chaque fichier avec des messages de validation
Je n'ai pas encore essayé cela, mais cela semble prometteur.
Vous pouvez trouver les fichiers de configuration dans dossier personnel Jenkins (par exemple, /var/lib/jenkins
).
Pour les conserver dans VCS, connectez-vous d'abord sous Jenkins (Sudo su - jenkins
) et créer ses informations d'identification git:
git config --global user.name "Jenkins"
git config --global user.email "[email protected]"
Puis initialisez, ajoutez et validez les fichiers de base tels que:
git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a
envisager également de créer .gitignore
avec les fichiers suivants à ignorer (personnaliser au besoin):
# 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-le: git add .gitignore
.
Une fois terminé, vous pouvez ajouter des fichiers de configuration de travail, par exemple.
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a
Enfin, ajoutez et validez tous les autres fichiers si nécessaire, puis envoyez-les dans le référentiel distant où vous souhaitez conserver les fichiers de configuration.
Lorsque les fichiers Jenkins sont mis à jour, vous devez les recharger ( Recharger la configuration à partir du disque ) ou exécuter reload-configuration
de Jenkins CLI.
Ce que je préfère, c’est d’exclure tout ce qui se trouve dans le dossier d’accueil de Jenkins sauf les fichiers de configuration que vous souhaitez réellement intégrer à votre VCS. Voici la .gitignore
fichier que j'utilise:
*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/
Cela ignore tout (*
) sauf (!
) .gitignore
lui-même, les travaux/projets, le plug-in et d'autres fichiers de configuration importants et destinés à l'utilisateur.
Cela vaut également la peine d’inclure le dossier plugins
. Des plugins mis à jour devraient être inclus ...
Cette solution facilite les futures mises à jour de Jenkins/Hudson car les nouveaux fichiers ne sont pas automatiquement inclus. Vous obtenez juste sur l'écran ce que vous voulez vraiment.
Un .gitignore
Plus précis, inspiré de 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 .xml
Et .gitignore
Lui-même. (La différence avec le .gitignore
de nepa est que cela ne "supprime pas" tous les répertoires de niveau supérieur (!*/
) comme logs/
, cache/
, Etc.)
La réponse de Mark ( --- (https://stackoverflow.com/a/4066654/142207 ) devrait fonctionner pour SVN et Git (bien que la configuration de Git ne fonctionne pas pour moi).
Mais si vous en avez besoin pour travailler avec le référentiel Mercurial, créez un travail 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 [email protected]
hg Push
fi
J'ai écrit un plugin qui vous permet de vérifier vos instructions Jenkins dans le contrôle de source. Ajoutez juste un .jenkins.yml
fichier avec le contenu:
script:
- make
- make test
et Jenkins le fera:
Je suis arrivé à Hudson entièrement, vous pourriez utiliser cela comme point de départ https://github.com/morkeleb/continuous-delivery-with-hudson
Garder hudson au complet présente des avantages. Toutes les modifications de configuration sont enregistrées et vous pouvez tester le test assez facilement sur un ordinateur, puis mettre à jour le ou les autres ordinateurs à l’aide de git pull.
Nous l’avons utilisée comme passe-partout pour notre configuration de livraison continue Hudson au travail.
Cordialement Morten