web-dev-qa-db-de.com

Gibt es eine Möglichkeit, Hudson / Jenkins-Konfigurationsdateien in der Quellcodeverwaltung zu belassen?

Ich bin neu bei Hudson/Jenkins und habe mich gefragt, ob es eine Möglichkeit gibt, Hudsons Konfigurationsdateien zur Quellcodeverwaltung einzusehen.

Im Idealfall möchte ich in der Lage sein, auf eine Schaltfläche in der Benutzeroberfläche zu klicken, in der "Konfiguration speichern" steht, und die Hudson-Konfigurationsdateien in die Quellcodeverwaltung einzuchecken.

135
Yuval Roth

Hilfreichste Antwort

Es gibt ein Plugin namens SCM Sync-Konfigurations-Plugin .


Ursprüngliche Antwort

Schauen Sie sich meine Antwort zu einer ähnlichen Frage an. Die Grundidee ist, das Dateisystem-scm-Plugin zu verwenden, um Änderungen an den xml-Dateien zu erkennen. Ihr zweiter Teil wäre das Übernehmen der Änderungen an SVN.

EDIT: Wenn Sie einen Weg finden, den Benutzer für eine Änderung zu bestimmen, lassen Sie es uns wissen.

EDIT 2011-01-10 Mittlerweile gibt es ein neues Plugin: SCM Sync Konfigurations Plugin . Derzeit funktioniert es nur mit Subversion und git, es ist jedoch geplant, weitere Repositorys zu unterstützen. Ich benutze es seit Version 0.0.3 und es hat bisher gut funktioniert.

62
Peter Schuetze

Beachten Sie, dass Vogella eine neue (Januar 2014, verglichen mit der Frage des OP Januar 2010) und andere Sichtweise dazu hat.
Bedenken Sie, dass das SCM Sync-Konfigurations-Plugin viele Commits generieren kann.
Anstatt sich auf ein Plugin und einen automatisierten Prozess zu verlassen, verwaltet er dieselbe Funktion manuell:

Speichern der Jobinformationen von Jenkins in Git

Ich fand die Anzahl der Commits etwas überwältigend, daher habe ich beschlossen, die Commits manuell zu steuern und nur die Jobinformationen und nicht die Jenkins-Konfiguration zu speichern.
Wechseln Sie dazu in Ihr Jenkins-Jobverzeichnis (Ubuntu: /var/lib/jenkins/jobs) und führen Sie den Befehl „git init" Befehl.

Ich habe folgendes erstellt .gitignore Datei um nur die Git Jobs Informationen zu speichern:

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

Jetzt können Sie nach Belieben Änderungen hinzufügen und festschreiben.
Und wenn Sie Ihrem Git-Repository eine weitere Fernbedienung hinzufügen, können Sie Ihre Konfiguration auf einen anderen Server übertragen.

Alberto eigentlich auch empfehlen (in $JENKINS_HOME):

  • jenkins eigene Konfiguration (config.xml),
  • die jenkins plugins configs (hudson*.xml) und
  • die Benutzer configs (users/*/config.xml)
39
VonC

Um Ihre Konfiguration mit Git manuell zu verwalten, kann die folgende .gitignore-Datei hilfreich sein.

# 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

Siehe dieses GitHub-Handbuch und dieser Blog-Beitrag für weitere Details.

19
Emil Sit

Es gibt ein neues SCM Sync Configuration Plug-In , das genau das tut, wonach Sie suchen.

Das Hudson-Plug-in für die SCM-Synchronisierungskonfiguration zielt auf zwei Hauptfunktionen ab:

  • Synchronisieren Sie Ihre config.xml-Hudson-Dateien (und andere Ressourcen) mit einem SCM-Repository
  • Verfolgen Sie Änderungen (und Verfasser), die an jeder Datei vorgenommen wurden, mit Commit-Nachrichten

Ich habe das noch nicht ausprobiert, aber es sieht vielversprechend aus.

14
Matt Solnit

Sie finden Konfigurationsdateien in Jenkins Home-Ordner (z. B. /var/lib/jenkins).

Um sie in VCS zu behalten, melden Sie sich zuerst als Jenkins an (Sudo su - jenkins) Und erstellen Sie seine git-Anmeldeinformationen:

git config --global user.name "Jenkins"
git config --global user.email "[email protected]"

Initialisieren, fügen Sie die Basisdateien hinzu und übergeben Sie sie wie folgt:

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

erwägen Sie außerdem, .gitignore mit den folgenden zu ignorierenden Dateien zu erstellen (passen Sie sie nach Bedarf an):

# 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

Dann füge es hinzu: git add .gitignore.

Wenn Sie fertig sind, können Sie Job-Konfigurationsdateien hinzufügen, z.

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

Fügen Sie schließlich bei Bedarf weitere Dateien hinzu und übertragen Sie sie in das Remote-Repository, in dem Sie die Konfigurationsdateien aufbewahren möchten.


Wenn Jenkins-Dateien aktualisiert werden, müssen Sie sie neu laden ( Konfiguration von der Festplatte neu laden ) oder reload-configuration Über die Jenkins-CLI ausführen.

6
kenorb

Ich bevorzuge es, alles im Jenkins-Ausgangsordner auszuschließen mit Ausnahme der Konfigurationsdateien, die Sie wirklich in Ihrem VCS haben möchten. Hier ist der .gitignore Datei, die ich benutze:

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

Dies ignoriert alles (*) außer (!) .gitignore selbst, die Jobs/Projekte, das Plugin und andere wichtige und Benutzerkonfigurationsdateien.

Es ist auch erwägenswert, den Ordner plugins einzuschließen. Ärgerlich aktualisierte Plugins sollten enthalten sein ...

Grundsätzlich erleichtert diese Lösung zukünftige Jenkins/Hudson-Updates, da neue Dateien nicht automatisch im Geltungsbereich sind. Sie bekommen nur auf dem Bildschirm, was Sie wirklich wollen.

5
nepa

Ein genaueres .gitignore, inspiriert von der Antwort von nepa :

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

Es ignoriert alles außer .xml Konfigurationsdateien und .gitignore selbst. (Der Unterschied zu nepa 's .gitignore bedeutet, dass nicht alle Verzeichnisse der obersten Ebene "ignoriert" werden (!*/) mögen logs/, cache/, etc.)

2
Andrey

Antwort von Mark ( https://stackoverflow.com/a/4066654/142207 ) sollte für SVN und Git funktionieren (obwohl die Git-Konfiguration bei mir nicht funktioniert hat).

Wenn Sie es jedoch für Mercurial Repo benötigen, erstellen Sie einen Job mit folgendem Skript:

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
2
okigan

Ich habe ein Plugin geschrieben , mit dem Sie Ihre Jenkins-Anweisungen in die Quellcodeverwaltung einchecken können. Füge einfach ein .jenkins.yml Datei mit dem Inhalt:

script:
    - make
    - make test

und Jenkins wird es tun:

enter image description here

2
Wilfred Hughes

Ich habe Hudson vollständig eingecheckt. Sie können dies als Ausgangspunkt verwenden https://github.com/morkeleb/continuous-delivery-with-hudson

Es hat Vorteile, den gesamten Hudson in Git zu halten. Alle Konfigurationsänderungen werden protokolliert und Sie können den Test auf einem Computer ganz einfach testen und dann die anderen Computer mit git pull aktualisieren.

Wir haben dies als Boilerplate für unser Hudson Continuous Delivery Setup bei der Arbeit verwendet.

Grüße Morten

0
Morten