Gibt es eine Möglichkeit Hudson / Jenkins Konfigurationsdateien in der Quellcodeverwaltung zu halten?

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

Frage

Ich bin neu in Hudson / Jenkins und frage mich, ob es einen Weg gibt in Hudson Konfigurationsdateien zur Quellcodeverwaltung überprüfen.

Im Idealfall möchte ich in der Lage sein, einige Schaltfläche in der Benutzeroberfläche zu klicken, die ‚Konfiguration speichern‘ sagt und haben die Hudson-Konfigurationsdateien überprüften in der Quellcodeverwaltung.

War es hilfreich?

Lösung

Die meist hilfreiche Antwort

Es gibt ein Plugin namens SCM Sync Konfiguration Plugin .


Original Antwort

Haben Sie einen Blick auf meine Antwort auf eine ähnliche Frage. Die Grundidee ist die Dateisystem-scm-Plugin zu verwenden erkennt Änderungen an den XML-Dateien. Ihr zweiter Teil der Änderungen SVN begehen würde.

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

EDIT 2011-01-10 Inzwischen gibt es ein neues Plug-in: SCM Sync Konfiguration Plugin . Derzeit arbeitet sie nur mit Subversion und Git, aber Unterstützung für mehr Repositories geplant. Ich verwende es seit der Version 0.0.3 und es funktioniert gut so weit.

Andere Tipps

Beachten Sie, dass Vogella hat einen aktuellen (Januar 2014 im Vergleich zu der Frage des OP Januar 2010) und andere Perspektive zu diesem Thema.
Bedenken Sie, dass die SCM Sync Konfiguration Plugin generieren viel Commits.
Anstatt also auf ein Plugin zu verlassen und einen automatisierten Prozess, er verwaltet die gleiche Funktion manuell:

Speichern des Job Informationen von Jenkins in Git

  

fand ich die Menge der Commits ein wenig überwältigend, so dass ich die Commits manuell steuern entschieden und nur die Auftragsinformationen und nicht die Jenkins Konfiguration zu speichern.
  Für diesen Schalter in der Jenkins Auftragsverzeichnis. (Ubuntu: /var/lib/jenkins/jobs) und führen Sie den „git init“ Befehl

     

Ich habe die folgende .gitignore Datei zu speichern, nur die Git Jobs Informationen:

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

Jetzt können Sie hinzufügen und verpflichten Änderungen an Ihrem eigenen Willen.
  Und wenn Sie eine andere Fernbedienung, um Ihre Git Repository hinzufügen Sie Ihre Konfiguration auf einem anderen Server schieben können.

Alberto tatsächlich empfehlen auch (in $JENKINS_HOME) hinzuzufügen:

  • jenkins eigene config (config.xml)
  • Jenkins Plugins configs (hudson*.xml) und
  • die Benutzer configs (users/*/config.xml)

Für die manuelle Konfiguration mit Git 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 dieser GitHub Gist und diese Blog-Post für weitere Details.

Es gibt einen neuen SCM Sync Configuration Plug-In was tut genau das, was Sie suchen.

  

SCM Sync Konfiguration Hudson-Plugin   richtet sich an zwei Hauptmerkmale:

     
      
  • Halten sync'ed Ihre config.xml (und andere Ressourcen) hudson Dateien mit einem   SCM-Repository
  •   
  • Änderungen verfolgen (und Autor) auf jede Datei, die mit Nachrichten commit
  •   

Ich habe nicht wirklich versucht, dies noch nicht, aber es sieht vielversprechend aus.

Sie können die Konfiguration finden Sie Dateien in Jenkins Home-Ordner (zB /var/lib/jenkins).

Um halten sie in VCS, der ersten Anmeldung als Jenkins (sudo su - jenkins) und erstellen ihre git Anmeldeinformationen:

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

Dann initialize, fügen und verpflichten die grundlegenden Dateien wie zum Beispiel:

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

Sehen Sie auch .gitignore mit den folgenden Dateien zu erstellen, zu ignorieren (bei Bedarf anpassen):

# 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

es dann hinzufügen:. 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

Schließlich fügen und alle anderen Dateien begehen, wenn nötig, dann schieben Sie es auf dem Remote-Repository, in dem die Konfigurationsdateien beibehalten möchten.


Wenn Jenkins Dateien aktualisiert werden, müssen Sie sie ( Reload Konfiguration von Datenträger ) oder laufen reload-configuration von Jenkins CLI neu zu laden.

So wie ich es vorziehen, ist alles in den Jenkins Home-Ordnern ausschließen außer die Konfigurationsdateien, die Sie wirklich in Ihrem VCS wollen. Hier ist die .gitignore Datei I Verwendung:

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

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

Es ist auch unter Berücksichtigung lohnt sich die plugins Ordner enthalten. Annoyingly aktualisiert Plugins enthalten sein sollten ...

Im Grunde diese Lösung macht es leichter für zukünftiges Jenkins / Hudson-Updates, da neue Dateien nicht automatisch im Rahmen sind. Sie erhalten nur auf dem screeen, was Sie wirklich wollen.

Eine genauere .gitignore, durch die Antwort inspiriert 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. (Die Differenz zu nepa 's .gitignore ist, dass es nicht "unignore" alle Top-Level-Verzeichnisse (!*/) wie logs/, cache/ usw.)

Antwort von Markus ( https://stackoverflow.com/a/4066654/142207 ) sollten für SVN arbeiten und Git (obwohl Git Konfiguration nicht Arbeit für mich getan hat).

Aber wenn Sie es an die Arbeit mit Mercurial Repo benötigen, erstellen Sie einen Job mit folgenden 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 fill_in_the@blank.com
    hg push
fi

Ich habe geschrieben ein Plugin , dass Sie Ihre Jenkins überprüfen können Anweisungen in die Quellcodeverwaltung. Fügen Sie einfach eine .jenkins.yml Datei mit dem Inhalt:

script:
    - make
    - make test

und Jenkins wird es tun:

eingeben Bild Beschreibung hier

Ich habe in hudson vollständig, können Sie dies als Ausgangspunkt nutzen könnten https: // github.com/morkeleb/continuous-delivery-with-hudson

Es gibt Vorteile für die gesamte hudson in git zu halten. Alle Konfigurationsänderungen protokolliert werden und Sie können die testup ganz einfach auf einer Maschine testen und aktualisieren Sie dann die andere Maschine (n) unter Verwendung von Git-Pull.

Wir haben dies als Textvorschlag für unsere hudson kontinuierliche Lieferung Setup bei der Arbeit.

Viele Grüße Morten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top