Ich verwende derzeit Jenkins auf meinem Entwicklungs-PC. Ich habe es auf meinem Entwicklungs-PC installiert, da ich nur begrenzte Kenntnisse über dieses Tool hatte. Also habe ich es in meinem Entwicklungs-PC getestet. Jetzt fühle ich mich mit Jenkins als meinem langfristigen "Partner" im Erstellungsprozess wohl und möchte diese Jenkins auf einen dedizierten Server "verschieben".
Vorher habe ich nur wenige Builds durchgeführt und die Artefakte von jedem Build archiviert. Insbesondere die Build-Nummer ist mir für die Versionskontrolle sehr wichtig.
Wie kann ich alle Jenkins-Informationen von meinem aktuellen PC auf meinen neuen Server exportieren?
jenkins
data-migration
huahsin68
quelle
quelle
Antworten:
Wenn Sie dem Jenkins-Wiki folgen , müssen Sie:
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOME befindet sich standardmäßig in
~/.jenkins
einer Linux-Installation. Um jedoch genau zu ermitteln, wo es sich befindet, rufen Sie die Seite http: // your_jenkins_url / configure auf und überprüfen Sie den Wert des ersten Parameters :Home directory
; Dies ist das JENKINS_HOME.quelle
Wenn Ihr JENKINS_HOME-Verzeichnis zum Kopieren zu groß ist und Sie nur dieselben Jobs, Jenkins-Plugins und Jenkins-Konfigurationen einrichten müssen (und keine alten Job-Artefakte und -Berichte benötigen), können Sie das ThinBackup-Plugin verwenden :
Konfigurieren Sie das Sicherungsverzeichnis auf beiden (unter Jenkins verwalten -> ThinBackup -> Einstellungen)
Gehen Sie auf Sourse Jenkins zu ThinBackup -> Backup Now
Wenn einige Plugins oder Jobs fehlen, kopieren Sie den Sicherungsinhalt direkt in das Ziel JENKINS_HOME.
Wenn Sie eine Benutzerauthentifizierung für die Quell-Jenkins hatten und jetzt für die Ziel-Jenkins gesperrt sind, bearbeiten Sie die Jenkins-Datei config.xml, setzen Sie sie
<useSecurity>
auf false und starten Sie Jenkins neu.quelle
Dies funktionierte für mich, um von Ubuntu 12.04 (Jenkins Version 1.628) zu Ubuntu 16.04 (Jenkins Version 1.651.2) zu wechseln. Ich habe Jenkins zuerst aus den Repositories installiert .
Kopieren Sie
JENKINS_HOME
(z. B. / var / lib / jenkins) vom alten Server auf den neuen. Von einer Konsole auf dem neuen Server:rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
Starten Sie Ihren neuen Jenkins-Server
Das brauchst du vielleicht nicht, aber ich musste
Manage Jenkins
undReload Configuration from Disk
.Configure System > Jenkins Location
, dieJenkins URL
korrekt mit dem neuen Jenkins - Server zugewiesen wird.quelle
/configureSecurity
habe, bekomme ichjava.lang.AssertionError: InstanceIdentity is missing its singleton
Jenkins Server Automation:
Schritt 1:
Richten Sie ein Repository ein, um die Jenkins-Startseite (Jobs, Konfigurationen, Plugins usw.) in einem lokalen GitLab-Repository oder in einem privaten GitHub-Repository zu speichern, und halten Sie es regelmäßig auf dem neuesten Stand, indem Sie neue Änderungen an Jenkins-Jobs, Plugins usw. vornehmen.
Schritt 2:
Konfigurieren Sie eine Puppet -Hostgruppe / -Rolle für Jenkins, mit der neue Jenkins-Server hochgefahren werden können. Führen Sie die gesamte Grundkonfiguration in einem Puppet-Rezept durch und stellen Sie sicher, dass die neueste Version von Jenkins installiert und ein separates Verzeichnis / Mount für eingerichtet wird
JENKINS_HOME
.Schritt 3:
Drehen Sie eine neue Maschine mit der obigen Jenkins-Puppenkonfiguration hoch. Wenn alles installiert ist, holen / klonen Sie die Jenkins-Konfiguration aus dem Git-Repository in die Jenkins-Home-Direcotry und starten Sie Jenkins neu.
Schritt 4:
Gehen Sie zur Jenkins-URL, Jenkins verwalten → Plugins verwalten und aktualisieren Sie alle Plugins, für die ein Update erforderlich ist.
Getan
Sie können Docker Swarm oder Kubernetes verwenden, um die Slave-Knoten automatisch zu skalieren.
quelle
Manchmal haben wir möglicherweise keinen Zugriff auf einen Jenkins-Computer, um einen Ordner direkt in eine andere Jenkins-Instanz zu kopieren. Deshalb habe ich ein menügesteuertes Dienstprogramm geschrieben, das Jenkins-REST-API-Aufrufe verwendet, um Plugins und Jobs von einer Jenkins-Instanz zur anderen zu installieren.
Für die Plugin-Migration:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
erhalten Sie eine Liste der Plugins, die mit ihrer Version installiert wurden.Sie können eine POST-Anfrage mit den folgenden Parametern senden, um diese Plugins zu installieren.
Für die Jobmigration:
{SOURCE_JENKINS_URL}/view/All/api/json
{SOURCE_JENKINS_URL}/job/{JOB_NAME}
.Ich habe in Python ein menügesteuertes Dienstprogramm erstellt, das den Benutzer auffordert, das Plugin oder die Jenkins-Migration zu starten, und dazu Jenkins REST-API-Aufrufe verwendet.
Sie können die JenkinsMigration.docx von dieser URL aus referenzierenJenkinsJenkinsmigrationJenkinsrestapi
quelle