Vor kurzem haben Führungskräfte lokale Projekte in Shanghai gebeten, Jenkins zur Erzielung einer automatischen Einsatz zu verwenden, damit die Projekte an die Betriebs- und Wartungsstudenten übergeben werden können, um die Entwicklung der Entwicklung zu verringern. Notieren Sie den Prozess des Kletterns dieser Grube.
1. Vorwort
Jenkins ist ein kontinuierliches Integrationstool, das auf Java basiert, um kontinuierliche sich wiederholende Arbeiten zu überwachen. Zu den Funktionen gehören:
1. Projekte zur Veröffentlichung/Testprojekte für kontinuierliche Softwareversion.
2. Überwachen Sie die Arbeit, die durch externe Anrufe ausgeführt wird.
Ich habe das obige aus der Enzyklopädie heruntergeladen. Um ehrlich zu sein, habe ich es nicht verstanden. Was ist das? Auf der Grundlage meines aktuellen Verständnisses und meiner aktuellen Anwendung ist die Bereitstellung am häufigsten. Andere Funktionen sind zu untersuchen (_). Der Meister arbeitet derzeit in einem unbekannten staatlichen Unternehmen in Shanghai. Der aktuelle Projektveröffentlichungsprozess ist:
1. Lokaler oder verpackter Server verwendet Maven, um ein Kriegspaket zu erstellen
2. Stellen Sie eine Verbindung zum Projektserver remote oder SSH her
3. Stoppen Sie Tomcat, löschen Sie das alte Paket und den Cache und geben Sie das neu gedruckte Paket ein
4. Tomcat neu starten. Die scheinbar einfachen Schritte, die auszuführen sind, aber es nimmt tatsächlich viel Entwicklungszeit in Anspruch.
Dann verwenden Sie Jenkins:
1. Klicken Sie jetzt, um jetzt zu erstellen und zu vervollständigen. Was? Klicken Sie einfach auf eine Schaltfläche und es ist fertig. Ja, es ist ein Knopf. Nachdem Sie auf die Schaltfläche geklickt haben, hat Ihnen Jenkins geholfen, den Hintergrund des obigen Vorgangs auszuführen. Dieses Mal werde ich vorstellen, wie man es im Hintergrund läuft.
2. Installation und Konstruktion
Diese Einführung basiert auf Windows, das auf einem Entwicklungscomputer oder einem Windows Server -Server installiert werden kann
1. Laden Sie Jenkins herunter
Jenkins bietet mehrere Installationsmethoden
1.1Jenkins.MSI -Installation ist genau wie bei der Installation von Software, Punkten. Download -Adresse: https://jenkins.io/download/
1.2Jenkins.war -Paket Da es sich um ein Kriegspaket handelt, ist es selbstverständlich, dass jeder weiß, wie man es anfängt. Wirf es einfach in Tomcat. Download-Adresse: http://updates.jenkins-ci.org/download/war/
2. Starten Sie Jenkins
Ich persönlich empfehle die Installationsmethode von 1.1. Ich stoße oft auf Speicherüberlaufprobleme, wenn ich 1.2 verwende. Natürlich kann der Speicherüberlauf angepasst werden, aber es gibt eine zusätzliche Arbeitsbelastung.
Mit der Installationsmethode 1.1 sehen wir nach Abschluss der Installation den Jenkins -Dienst im Windows -Dienst. Wie in der folgenden Abbildung gezeigt, starten Sie einfach und starten Sie den Service direkt neu.
Wenn Sie 1.2 zum Herunterladen des Kriegspakets verwenden, gibt es tatsächlich zwei Möglichkeiten, es zu starten.
Der erste Typ wird im Tomcat -Behälter platziert.
Der zweite Typ besteht darin, CMD in das Installationsverzeichnis Java -Jar Jenkins.war einzugeben
3. Installieren Sie Jenkins
Die Installationsmethode 1.1 und 1.2 sind gleich
Jenkins Standardport 8080 kann geändert werden, Methode Baidu.
Geben Sie http: // localhost: 8080/. Der Rote Schriftart verfügt über ein Passwort, füllt das Passwort und dann den nächsten Schritt aus.
Bei der Auswahl eines Plug-Ins wird empfohlen, ein offizielles empfohlenes Plug-In auszuwählen, um viele Probleme zu vermeiden.
Warten auf die Installation ...
Nach der Installation sehen Sie das Bild unten. Der Benutzername und das Kennwort werden zum Anmelden verwendet. Der vollständige Name wird verwendet, um ihn anzuzeigen. Fahren Sie mit dem nächsten Schritt fort.
Da ich das Maven -Projekt bereitstellen möchte, gibt es kein Maven im Standard -Plugin von Jenkins, daher muss ich es zuerst installieren.
Klicken Sie auf das Plugin unten, um es direkt zu installieren. Maven Integration Plugins
Installieren Sie das Hot Deployment -Plugin, das an Container -Plugin bereitgestellt wurde
4. Konfigurieren Sie Jenkins
Wir müssen mit der Maven -Einstellungsdatei, der JDK und der Maven -Adresse übereinstimmen. Die Einstelldatei muss übereinstimmen. Verwenden Sie es nicht als Standard. Da dies nicht übereinstimmt, haben Sie lange Zeit zu kämpfen.
Schließlich bewerben Sie sich einfach und speichern Sie. Denken Sie nicht daran, die Anwendung zu speichern, sonst ist sie vergebens.
Als nächstes erstellen wir ein neues Projekt, geben Sie zunächst den Projektnamen ein, wählen Sie das Maven -Projekt aus, OK
Wählen Sie die Quellcodeverwaltung aus, da wir ein Unternehmensprojekt sind, nicht Open Source, verwenden Sie SVN, wählen Sie Subversion, um SVN zu konfigurieren
Die URL ist Ihre SVN -Adresse, und Anmeldeinformationen sind das Kontokennwort
Gehen Sie dann zu Pre -Stufen, dieses Ding ist, was Vorgänge vor der Verpackung benötigen. Zum Beispiel muss unser aktuelles Projekt die Datei log4j.xml usw. kopieren. Sie können Windows- oder Shell -Skripte gemäß der Umgebung schreiben
Wenn es keine Operation gibt, müssen Sie nicht mithalten.
Veröffentlichen Sie mein Skript als Referenz. Ich werde XXX verwenden, um die entsprechenden Teile zu ersetzen.
@echo offrem set variable :: app.xxx app.xxx Code Lokal und Verzeichnis set app.xxx = "d: /svn/svn.173.xxx/app.xxx/" :: home HOME_OMM_LOG4J_GOALS_PATH = "D: /svn/svn.173.xxx/app.xxx/src/home.ommm/src/main/resources" :: home_omm_log4j Der Pfad der log4j.xml -Testumgebung von Home.ommm Set Set Set Set Set -Umgebung von Home.ommm Set Set Set -Umgebung von Home.ommm Set Set -Umgebung von Home.ommm Set Set. HOME_OMM_LOG4J = "D: /svn/svn.173.xxx/app.xxx/config/home.ommm/sh_test/resources" :: home Home.weixins log4j.xml HOME_WEIXIN_LOG4J_GOALS_PATH = "D: /svn/svn.173.xx/app.xxx/src/home HOME_WIXIN_LOG4J = "D: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/resources" :: Home_Weixin_Config.js_goals_path config.js Path HOME_WEIXIN_CONFIG.JS_GOALS_PATH = "D: /SVN/SVN.173.xxx/app.xxx/src/home.weixin/src/main/webapp/module/js" :: Home_weixin_config.js home.ommmms home.ommmms homes homes homes homes homes homes home HOME_WEIXIN_CONFIG.JS = "D: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/webapp/module/js" :: Home.Wexin Variable End :: Service Variable Start :: Service_log4J_Goals_goals_path Die Log4j.dr. Service_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources" :: service_log4j Der Pfad der log4j.xml -Testumgebung des Dienstes ist festgelegt Service_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources" :: service_application_resources_all_goals_path Der Pfad der Anwendungsresources-all.xml wird eingestellt, der eingestellt ist. Service_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources/config/spring": Service_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources/config/spring" :: service Variable End :: service.Refresh Variable start: Service_refresh_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources" :: service_refresh_log4j Service -Pfad Set des Dienstes Service_refresh_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources" :: service_refresh_Application_resources_all_goals_path Der Pfad, der Anwendungsresources-All.xml setzt, ist eingestellt. Service_refresh_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources/config/spring": Service_refresh_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources/config/spring": %HOME_OMM_LOG4J_GOALS_Path %/log4j.xml (del %home_omm_log4j_goals_path %/log4j.xml) cd %Home_omm_log4j_goals_path % % %Home_omm_log4j %/log4j.xml log4j.xml: %HOME_WIXIN_LOG4J_GOALS_PATH %/LOG4J.XML (Del %Home_Weixin_log4J_Goals_path %/log4j.xml) %HOME_WIXIN_LOG4J %/log4j.xml log4j.xml :: Richter, ob die Datei config.js von home.eixin existiert, wenn existieren %home_weixin_config.js_goals_path %/config.js (Del %Home_Weixin_config.js_goals_paths_paths_paths_paths_paths_paths_paths_paths_paths_paths_paths_paths). %HOME_WIXIN_CONFIG.JS_GOALS_PATH %Copy %Home_Weixin_Config.js %/config.js config.js :: urteilen Sie, ob die Datei des Dienstes von config. %Service_log4j_goals_path %Copy %service_log4j %/log4j.xml log4j.xml :: Richter, ob die Anwendungsresources-all.xml-Datei des Dienstes vorhanden ist, wenn existieren Sie %service_application_resources_all_goals_path %/Application-Resources-all.xml (del %Service_application_resources_all_goals_path%/application-resources-all.xml) cd%service_application_resources_all_goals_path%Copy%service_application_resources_all%%/application-resources-all %Service_refresh_log4j_goals_path%/log4j.xml (del%service_refresh_log4j_goals_path%/log4j.xml) service.refresh existiert, wenn existieren Sie %service_refresh_application_resources_all_goals_path %/application-resources-all.xml (del %service_refresh_application_resources_all_goals_path %/application-resources-all.xml) CD %Service_refresh_application_resources_all_goals_path %/application-resources-all.xml) cd %service_refresh_application_resources_all_goals_path % % %service_refresh_application_resources_all %/Application-Resources-all.xml-Applesources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources-Resources
Der Build wurde zusammengestellt, wobei der POM -Standort und den MVN -Befehl angeben. Übrigens können Sie auch den Arbeitsbereich in der erweiterten Ebene konfigurieren, die nicht mit der Standardeinstellung im Jenkins -Installationsverzeichnis übereinstimmt.
Nach dem Gebäude ist der Betrieb, wo es nach Abschluss des Pakets eingesetzt werden soll. Wählen Sie das folgende Bild aus
Nach diesem Baubetrieb verwenden wir Tomcats Hot Deployment. Sie können sich auf meinen vorherigen Artikel beziehen: Tomcats heiße Bereitstellung
Krieg/Ohr: Die Adresse des Kriegspakets
Kontext: Ist der bereitgestellte Paketname
Benutzername/Passwort bezieht sich auf das Konto/das Kennwort für Hot Deployment Tomcat
URL: Tomcat -Schnittstelle wie: http://172.16.101.71:8180/
5. Bauen
Nachdem es so viel gesprochen hat, ist es endlich Zeit zu kommen. Der Betrieb eines Knopfes ist endlich eingetroffen. Sie können unser Projekt sehen, wenn Sie zur Homepage von Jenkins zurückkehren.
Klicken Sie nach dem Gebäude auf den Status der Build Execution in der unteren linken Ecke, um festzustellen, dass unser Projekt im Bau befindet. Klicken Sie auf den Projektnamen, um einzugeben
Wählen Sie die Konsole aus, um die während des Konstruktionsprozesses gedruckte Protokoll- oder Fehlermeldung anzuzeigen.
3. Bestehende Probleme
Das Problem der Jenkins -Rolle, seit es veröffentlicht wird, betrifft es die Produktionsumgebung. Alle Benutzer können nicht die Erlaubnis haben, die Produktionsumgebung bereitzustellen. Wenn jemand versehentlich darauf klickt. Die Konsequenzen ... können es nicht glauben.
Lösung: Installieren Sie das rollenbasierte Autorisierungsstrategie-Plug-In und finden Sie in den verbleibenden Schritten: http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html. Ich bin nicht detailliert.
Das Problem der Tomcat Hot Deployment, des Speicheranstiegs und des Überlaufs nach mehrmals Bereitstellung, stoppen Sie aus oder melden Sie einen Fehler. Ich habe das Problem der Hot Deployment selbst online überprüft und suche nach einer Lösung ...
Lösung: Es gibt Probleme mit der Tomcat -Hot -Bereitstellung selbst, und die Produktionsumgebung übernimmt im Allgemeinen nicht die Hot -Bereitstellungsmethode. Da meine Testumgebung das Windows Server 2008 -System verwendet, wird derzeit die Hot Deployment -Methode angewendet. Das Problem besteht immer noch. Ich habe jedoch einen Beitrag gelesen, dass er mit dem Windows -Batch -Befehl gelöst werden kann, der den Befehl Fledermaus ist, aber ich habe ihn nicht ausführlich untersucht. Im Linux-System in der Produktionsumgebung verwende ich derzeit die Veröffentlichung über SSH-Plug-In. In den spezifischen Schritten werden die folgenden Schritte zur Konfiguration hinzugefügt.
1. In der Systemverwaltung-Systemeinstellungen finden Sie die Veröffentlichung über SSH und geben Sie ein:
2. Konfigurieren Sie Postschritte
Hier werden wir das obige Projekt fortsetzen. Diese Konfiguration wird erst nach der Installation des obigen Plug-Ins angezeigt!
Transfer SetSource -Dateien: Zeigt das lokale Kriegspaket und den Pfad an, um hochzuladen. Sie können zum Arbeitsbereich gehen, um es anzuzeigen.
Präfix entfernen: bedeutet, dass der Ordner beim Hochladen entfernt wird, dh nur das Kriegspaket wird hochgeladen
Remote -Bohrer: bedeutet den Pfad während der Ausführung, der dem Kriegspaket hier hochgeladen ist
Exec Commad: Der Befehl, der ausgeführt wird
Wie in der Abbildung gezeigt, wird das Kriegspaket im Ordner Home/Admin -Ordner platziert, und dann werde ich den von mir geschriebenen Shell -Befehl ausführen. Es besteht hauptsächlich darin, Tomcat anzuhalten, das ursprüngliche Kriegspaket zu sichern, das ursprüngliche Kriegspaket unter WebApp zu löschen, das neue Kriegspaket unter Heim/Administrator zu kopieren, Tomcat zu starten, und dann ist es fertig. Dadurch wird das Problem des Serverabsturzs vermieden, der durch den Überlauf des Hot Deployment -Speichers verursacht wird.
Skriptreferenz:
#!/bin/sh #defined tomcat_home = "/usr/java/tomcat/apache-tomcat-7.0.67/" id = `ps -f | Grep Java | grep tomcat | awk '{print $ 2}' `echo $ id echo" Kill tomcat "Kill -9 $ id echo" remover kriegsdatei "CD" $ tomcat_home "/webapps rm -rf javaweb-0.0.1-Snapshot rm -rf javaweb-0.1.1-Snapshot.warf-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appho-appo. /home/lin cp javaweb-0.0.1-snapshot.war "$ tomcat_home"/webapps cd "$ tomcat_home"/bin echo "start tomcat" ./startup.shDas Problem des Plugin -Plugins, die oben verwendete Bereitstellung für Container -Plugin -Plugin -Plugin, wird zur Implementierung der Hot Deployment verwendet. Die Bereitstellung von Plugin -Grenzen, die ein Projekt nur ein Kriegspaket bereitstellen kann. Mein Projekt ist, dass zwei Kriege, die von den vorderen und hinteren Enden eines Projekts getrennt sind, nicht zweimal gebaut werden können,  ̄へ ̄.
Lösung: Versuchen Sie, keine Hot Deployment zu verwenden. Wenn die Testumgebung vorübergehend verwendet wird, baue ich derzeit zwei neue Projekte und erstelle jeweils nur ein Kriegspaket.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.