1. 程式人生 > >利用jenkins+maven部署java應用到遠端伺服器

利用jenkins+maven部署java應用到遠端伺服器

jenkins作為持續整合的利器,在很多公司都會使用,他可以很方便整合其他的工具,提供對專案程式碼管理,程式碼review,打包,釋出一站式服務。jenkins使用java語言寫的,安裝的前提是需要安裝jdk,既可以在直接通過java -jar jenkins.war執行,也可以將它放到tomcat的webapps目錄下,隨著tomcat啟動而啟動。

這裡要進行的試驗是利用jenkins持續整合將git遠端程式碼拉取到jenkins目錄下,然後利用maven對專案進行構建,然後將構建的jar包,釋出到遠端伺服器上,並執行起來。

這裡對試驗資源的規劃:兩臺虛擬機器,一臺作為jenkins持續整合的機器server,另一臺作為遠端釋出java專案的機器node01。他們都需要安裝jdk.

一、開始安裝

server上需要安裝的相關程式:

1、jdk安裝,略過。

2、jenkins的安裝,這裡我依賴於一個tomcat8,將下載的jenkins.war包放入tomcat/webapps目錄下,啟動tomcat來啟動jenkins。

  a)tomcat啟動之後,會啟動jenkins,jenkins專案啟動之後,會在/root目錄下生成.jenkins目錄,這裡存放jenkins外掛,配置,登入密碼,專案空間等,如下圖所示:

密碼在secrets/initialAdminPassword中。

  b)jenkins啟動之後,訪問地址為http://192.168.42.128:8080/jenkins,登入使用者名稱和密碼:admin/d2a9c843d2114f109d0572ce9ebf27fa

  c)jenkins只是一個管理工具,他需要整合其他工具才能進行後續程式碼打包釋出。

3、git安裝,centos下,可以直接用yum來安裝,裝完即可使用git命令,這裡我們只需要git作為客戶端命令來使用。

yum install git
檢視git版本

4、maven安裝,上apache官網,找到maven,下載解壓縮,設定環境變數即可使用。

node01機器:

jdk安裝,略過。

二、配置

git,maven安裝完成,就可以開始著手構建專案了,這裡需要將系統的git,maven整合到jenkins,所以,需要安裝對應的外掛。

外掛安裝和配置,左側選單中依次選擇系統管理->外掛管理,選擇可選外掛tab頁,可以搜尋以下外掛:

1)maven integration plugin //該外掛安裝了,才能建立maven專案。

2)git plugin                             //從遠端拉取程式碼

3)deploy to container plugin //釋出

4)publish over ssh                //ssh遠端登入

選擇了外掛,可以直接安裝,該過程會等待,不是立即就可以完成的,視網路情況而定。

下面就開始進行配置。

1、系統設定,這裡需要設定遠端機器node01的key,name,hostname,username。

先在遠端機器node01上通過ssh-keygen命令生成無密碼登入的祕鑰。然後將id_rsa的內容貼上到publish over ssh部分的key文字框中。

然後填寫node01機器名稱,ip,登入名,預設root.

2、系統工具配置,依次選擇系統管理->Global Tool Configuration

配置jdk安裝路徑,git可執行路徑(預設不用配置git),maven安裝路徑,並且都將自動安裝選項取消。

下面真正的從建立專案到構建釋出,還需要一些配置。

三、構建專案併發布

1、新建任務,maven專案webapp;

接著配置原始碼管理,這裡需要配置一個遠端gitserver上的專案倉庫地址,可以使github,也可以是公司內部的git伺服器上的專案倉庫地址。

2、配置構建策略;

這裡就是構建成功之後要做的事情,比如是要將打包之後的jar通過ssh登入遠端機器的方式部署到遠端伺服器,並執行伺服器上的指令碼deploy.sh來啟動服務。

3、開始構建。

點選立即構建之後,可以在左側Build History看到一個正在構建的記錄,還有進度條,這裡可以通過檢視console output,看構建輸出日誌。

構建日誌:

構建成功:

遠端釋出並啟動程式成功。

SSH: Connecting from host [server]
SSH: Connecting with configuration [node01] ...
channel stopped
SSH: EXEC: STDOUT/STDERR from command [/root/deploy.sh] ...
Archive:  /root/webapp-0.0.1-SNAPSHOT-bin.zip
   creating: webapp-0.0.1-SNAPSHOT/
   creating: webapp-0.0.1-SNAPSHOT/lib/
 extracting: webapp-0.0.1-SNAPSHOT/lib/test-jetty-servlet-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-webapp-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-xml-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-util-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-servlet-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-security-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-server-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/servlet-api-3.0.20100224.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-continuation-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-http-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/jetty-io-8.1.0.RC5.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/log4j-1.2.17.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/slf4j-log4j12-1.7.12.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.12.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/spring-beans-4.2.0.RELEASE.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/spring-core-4.2.0.RELEASE.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/commons-logging-1.2.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/spring-context-4.2.0.RELEASE.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/spring-aop-4.2.0.RELEASE.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/aopalliance-1.0.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/spring-expression-4.2.0.RELEASE.jar  
 extracting: webapp-0.0.1-SNAPSHOT/lib/webapp-0.0.1-SNAPSHOT.jar  
   creating: webapp-0.0.1-SNAPSHOT/bin/
  inflating: webapp-0.0.1-SNAPSHOT/bin/app.sh  
   creating: webapp-0.0.1-SNAPSHOT/conf/
  inflating: webapp-0.0.1-SNAPSHOT/conf/applicationContext.xml  
  inflating: webapp-0.0.1-SNAPSHOT/conf/log4j.xml  
PID: 
/root/webapp-0.0.1-SNAPSHOT/conf:/root/webapp-0.0.1-SNAPSHOT/lib/aopalliance-1.0.jar:/root/webapp-0.0.1-SNAPSHOT/lib/commons-logging-1.2.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-continuation-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-http-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-io-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-security-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-server-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-servlet-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-util-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-webapp-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/jetty-xml-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/log4j-1.2.17.jar:/root/webapp-0.0.1-SNAPSHOT/lib/servlet-api-3.0.20100224.jar:/root/webapp-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.12.jar:/root/webapp-0.0.1-SNAPSHOT/lib/slf4j-log4j12-1.7.12.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-aop-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-beans-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-context-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-core-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/spring-expression-4.2.0.RELEASE.jar:/root/webapp-0.0.1-SNAPSHOT/lib/test-jetty-servlet-8.1.0.RC5.jar:/root/webapp-0.0.1-SNAPSHOT/lib/webapp-0.0.1-SNAPSHOT.jar
starting...\c
2896
ok
SSH: EXEC: completed after 1,204 ms
SSH: Disconnecting configuration [node01] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS

總結:

        整個過程,前面的安裝和配置佔了大部分時間,這是從無到有的一個過程,所以很繁瑣,但是後續的構建專案,是很快的,這就是持續整合的好處,將人的工作由工具來完成,可以減少出錯的概率,提高效率。

        另外,這還是沒有整合程式碼review的部分。

相關推薦

利用jenkins+maven部署java應用遠端伺服器

jenkins作為持續整合的利器,在很多公司都會使用,他可以很方便整合其他的工具,提供對專案程式碼管理,程式碼review,打包,釋出一站式服務。jenkins使用java語言寫的,安裝的前提是需要安裝jdk,既可以在直接通過java -jar jenkins.war執行,

maven部署專案到遠端伺服器

在專案部署的過程中,通常需要打war包,在將war包遠端拷貝到目的伺服器。操作有點麻煩,也是能接受。 不過有了一種更方便的操作:是IDEA通過maven將打好的war直接部署到遠端伺服器的步驟。 一、在安裝的Tomcat目錄下找到/conf/tomcat-user.xml這

maven 部署專案到遠端伺服器

之前我單個專案的時候 部署到伺服器是通過 在本地壓好tomcat裡面的專案 再用上傳工具上傳到  伺服器上解壓 執行,當時也覺得不是很麻煩,一個專案弄一遍也不用很長時間  之後 又管理了 幾個專案 這樣弄肯定是不行了 整個弄一遍非常麻煩 於是找到了maven 的外掛:tom

jenkins遠端地址拉取專案自動部署到指定遠端伺服器

2017年11月02日 15:05:28 閱讀數:7620更多 轉載自:http://blog.csdn.net/xbynet/article/details/52779314 基本 版本JenKins:2.19.1, Maven:3.1 環境要求:

jenkins 部署專案到遠端伺服器(Publish Over SSH)

.安裝Publish Over SSH外掛    系統管理-》外掛管理-》搜尋Publish Over SSH 安裝完成後,新增遠端伺服器   系統管理-》系統設定  下拉到底下  Publish Over SSH選

Jenkins自動構建部署專案到遠端伺服器

1.下載jenkins    啟動jenkins方式有2種1.1切換到jenkins.war包的存放目錄     啟動命令: java -jar  jenkins.war 啟動jenkins       訪問: localhost:8080 就能進入jenkins管理頁面1.

部署 Java 應用程序到阿裏雲 ECS

int ide account java se start href dep 下載 cep 前言 隨著雲計算技術突飛猛進的發展,越來越多的開發者選擇將應用程序部署到阿裏雲的 ECS 機器上,這裏是一篇教程文章,介紹如何將本地開發的 Java 應用程序,部署到阿裏雲 ECS。

開發筆記9 | 部署 Java 應用程式到阿里雲 EDAS

前言 在之前的一篇文章中,我們介紹了 如何將一個本地的 Java 應用程式直接部署到阿里雲 EDAS ,有不少讀者反饋,如果目前已經在使用阿里雲 EDAS 了,那該如何配合這個外掛部署應用呢?在本文中,我們來介紹 部署 Java 應用程式到阿里雲 EDAS。 關於 EDAS EDAS 是一個圍繞應用和微

k8s上部署java應用(activiti)實踐

前言 接到一個任務,需要在k8s上叢集部署一個java應用,感覺挺簡單的,用起來才發現自己是個嘴強王者。 任務描述:通過k8s上部署應用activiti,這個應用裡面包含了三個jar包。地址如下:

maven部署jar 到遠端倉庫

1,進入專案根路徑(注意如果為多module 專案,不要進入module 路徑)執行如下命令: mvn clean install -Dmaven.test.skip=true 檢視打包日誌是否正常,打出的jar 包是否為想要的jar 包。如果沒有問題則進行下一步; 2,

在Docker中利用Tomcat快速部署web應用

在學習了docker的基本操作之後,我們就可以嘗試在我們的container中部署一些基本的應用了。 這篇文章我們就來說一下怎麼在docker中快速部署一個web應用。 首先肯定是要機器中安裝了docker,如果沒安裝就是用yum install -y

利用docker來部署web應用

參考:作者一https://tommy.net.cn/2015/02/13/run-and-debug-php-website-with-docker-part-1/ 作者二https://menng.github.io/2015/08/24/run-php-website

如果在docker中部署tomcat,並且部署java應用程式

1、先說如何在docker中部署tomcat     第一步:root使用者登入在系統根目錄下建立資料夾tomcat7,命令如:mkdir tomcat7,並且切換到該目錄下:cd tomcat7;     第二步:建立Dockerfile,命令如:touch Docker

本地java連結遠端伺服器Linux上redis出錯解決方案

在redis.conf檔案中bind 127.0.0.1加上#號 在redis.conf檔案中把 #requirepass 的#號去掉,在後面加上鍊接redis-server的密碼 在本

Jenkins+Maven進行Java專案持續整合

最近配置了Jenkins伺服器,記錄下基本過程。(當然還遇到了若干小問題,兵來將擋水來土掩就是了) Jenkins安裝 安裝Tomcat 從Jenkins官網下載jenkins.war檔案。官網地址:http://jenkins-ci.org/,注意選擇最新版本的Long-

使用maven部署專案到tomcat伺服器的筆記

使用了maven進行開發之後然後要把專案部署到伺服器中,剛開始以為是和普通的部署一樣然後按照著普通的部署方法發現行不太通(備註:也可以從事先編譯好再把webapp資料夾下面的內容拷貝到tomcat的子目錄webapp目錄下面,也可以藉助eclipse先把專案打包成war包放

java連線遠端伺服器redis超時

java連線遠端redis超時 修改redis配置檔案 vi redis.conf 將bind 127.0.0.1 註釋 關閉防火牆 systemctl stop firewalld.se

git一鍵部署程式碼到遠端伺服器

為什麼說是一鍵? 1.首先,我將git add .,git commit -m ' ',git push配置成了一條命令。 2.然後,通過配置webhook,實現將程式碼push到git.coding

IntelliJ IDEA自動部署專案至遠端伺服器與傳統部署專案至遠端伺服器的區別

每次開發Java專案時,對於所有Java開發人員來說,最枯燥的不是修改程式碼,而是實時將自己的程式碼上傳至遠端伺服器,進行測試或者部署,本人最初開發也是這樣,通過使用Xshell 5,WinSCP等工具對專案進行遠端部署測試,每次都得花大量時間,對  開發和部署來說,太過於繁

手把手docker部署java應用(初級篇)

本篇原創釋出於 Flex 的個人部落格:點選跳轉 前言   在沒有 docker 前,專案轉測試是比較麻煩的一件事。首先會化較長的時間搭建測試環境,然後在測試過程中又經常出現測試說是 bug,開發說無法復現的情況,導致撕逼。   本篇記錄瞭如何將一個 java 應用部署到 docker 中。主要講述了以下幾個