Gibt es eine Möglichkeit Hudson / Jenkins Konfigurationsdateien in der Quellcodeverwaltung zu halten?
-
21-09-2019 - |
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.
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
“ BefehlIch 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:
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