1. 程式人生 > >教你如何用Jenkins自動化部署專案(教程,從零到搭建完成)

教你如何用Jenkins自動化部署專案(教程,從零到搭建完成)

      最近在實習中接觸了jenkins這個東西,所以花點時間瞭解了下。它可以在程式碼上傳倉庫(如github,gitee,gitlab)後,在jenkins(一個網站介面)中通過獲取程式碼倉庫中最新程式碼,進行自動化部署,而省去手動打包、上傳伺服器、部署這一系列步驟,非常方便。

       下面教程分為以下幾個部分:

一、在你的本地電腦或者linux伺服器上下載安裝jenkins:

下載完後把它部署到你的tomcat上執行:放到tomcat的webapps目錄下,啟動tomcat(windows下雙擊startup.bat或者linux下執行sh startup.sh),然後通過瀏覽器訪問,如我的電腦上訪問:localhost:8080/jenkins 。啟動後的介面如下:

然後到提示的檔案中把裡面的文字複製出來填到管理員密碼中。

接著如果是在本地電腦跑,可能會出現:該jenkins例項似乎已離線 提示,如果出現,是因為本地https訪問不了的原因。在瀏覽器中另開啟一個介面http://localhost:8080/pluginManager/advanced,把升級站點中的url中的https改為http,儲存更新。然後關掉tomcat伺服器重啟,就可以聯網了。

        接下來選擇安裝推薦的外掛,這個需要一定的時間。最後額外推薦安裝兩個外掛,在系統管理中可以安裝外掛:

1、 Rebuilder

2、 Safe Restart

二、在linux伺服器中安裝git, maven,建立一個jenkens目錄,配置git的公鑰到你的github上,這些步驟是使用jenkins的前提。

     安裝git的目的是在自動化部署前實時從git遠端倉庫中拉取最新的程式碼。在linux(我用的是centos系統)安裝git:

yum install git

     生成金鑰:

ssh-keygen -t rsa -C "[email protected]"

    可以不設定金鑰密碼直接按三次回車。 把家目錄中生成的公鑰內容複製到github或其他倉庫上。    

    安裝maven的目的是通過專案中的pom.xml檔案自動解決專案依賴問題,構建專案。linux中通過wget+下載連結下載maven的zip包然後解壓即可。配置maven環境變數:

vim /etc/profile

//在這個檔案末尾加上
export MAVEN_HOME=/root/maven3.4.5
export PATH=$MAVEN_HOME/bin:$PATH

//儲存後在命令列輸入,啟動配置
. /etc/profile

    建立jenkins目錄,用來儲存拉取下來的專案程式碼等。

三、將Linux伺服器註冊到Jenkins上

1、開啟伺服器上的ssh服務,可通過 netstat -anp | grep :22命令檢視是否開啟

2、先來測試一下怎麼在jenkins中操作遠端伺服器

在jenkins中選擇系統管理——》新建節點

其中遠端工作目錄即你在Linux上建立的jenkins目錄。在Credentials新增一個遠端使用者,輸入你的遠端機器使用者名稱和密碼儲存。

點選TestEnv,啟動代理。

在全域性工具配置中配置git命令:

3、自動化部署過程原理:

所以需要編寫一個shell指令碼來執行這個過程。

具體的建立Jenkins任務的過程為

1.建立jenkins任務

2.填寫Server資訊

3.配置git引數

4.填寫構建語句(shell指令碼),實現自動部署。

四、建立自動化部署任務

1、編寫shell部署指令碼deploy.sh,並放到linux伺服器中的jenkins目錄下,在該目錄下通過touch deploy.sh建立一個指令碼,把下面的指令碼複製到裡面即可(到時每次自動部署都會執行它),指令碼中的my-scrum為我要自動構建的專案名:

#!/usr/bin/env bash
#編譯+部署專案站點

#需要配置如下引數
# 專案路徑, 在Execute Shell中配置專案路徑, pwd 就可以獲得該專案路徑
# export PROJ_PATH=這個jenkins任務在部署機器上的路徑

# 輸入你的環境上tomcat的全路徑
# export TOMCAT_APP_PATH=tomcat在部署機器上的路徑

### base 函式
killTomcat()
{
    #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    #echo "tomcat Id list :$pid"
    #if [ "$pid" = "" ]
    #then
    #  echo "no tomcat pid alive"
    #else
    #  kill -9 $pid
    #fi
    #上面註釋的或者下面的
    cd $TOMCAT_APP_PATH/bin
    sh shutdown.sh
}
cd $PROJ_PATH/my-scrum
mvn clean install

# 停tomcat
killTomcat

# 刪除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war

# 複製新的工程到tomcat上
cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/

cd $TOMCAT_APP_PATH/webapps/
mv my-scrum.war ROOT.war

# 啟動Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

2、在jenkins上點選新建一個任務,填好任務名,填寫執行的節點(上文中新建節點時建立的):

3、點選原始碼管理,填寫github(或gitlab等)地址:

4、點選add,選擇check out to a sub-directory ,新增原始碼下載到jenkins目錄下的指定目錄(可以命名為你的專案名):


5、填寫構建任務時的shell指令碼,然後儲存,點選立即構建完成自動構建。(這裡有一個坑,一定要給tomcat下所有sh檔案加上x許可權才能啟動tomcat成功,具體為在tomcat目錄上層執行chmod a+x  -R tomcat目錄或者在tomcat的bin目錄下執行chmod +x *.sh)

#當jenkins程序結束後新開的tomcat程序不被殺死
BUILD_ID=DONTKILLME
#載入變數
. /etc/profile
#配置執行引數

#PROJ_PATH為設定的jenkins目錄的執行任務目錄
export PROJ_PATH=`pwd`
#配置tomcat所在目錄
export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum

#執行寫好的自動化部署指令碼
sh /root/jenkins/deploy.sh

6、自動化構建成功:

7、後續程式碼如果有改動,只要push到github或者gitlab等上,在jenkins介面中再次執行構建任務就可以了,非常方便,自動化部署,再也不用手動上傳專案到伺服器了。

五、解決一個tomcat關閉,所有tomcat都被關閉了的問題(如果你的jenkins也是安裝的伺服器上的其中一個tomcat中,就可能被莫名殺掉)

       這是因為所有的tomcat的關閉指令碼(shutdown.sh或者說catalina.sh)都預設監聽的是8005埠。只要進去tomcat目錄下的conf目錄下的server.xml檔案中,將

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->

中的8005埠改為不同的埠,就不會一個tomcat關閉,所有的tomcat都被關閉了

六、以後可以在linux伺服器中安裝多個tomcat,來部署不同的專案,分別使用不同的埠,如我喜歡用8081,8082,8083等埠來解決多個tomcat埠衝突問題(在tomcat的conf目錄下的server.xml中修改即可,預設為8080)。然後可以用jenkins來管理這些tomcat的自動化部署啦。

七、謝謝閱讀,歡迎交流!

相關推薦

如何用Jenkins自動化部署專案(教程搭建完成)

      最近在實習中接觸了jenkins這個東西,所以花點時間瞭解了下。它可以在程式碼上傳倉庫(如github,gitee,gitlab)後,在jenkins(一個網站介面)中通過獲取程式碼倉庫中最新程式碼,進行自動化部署,而省去手動打包、上傳伺服器、部署這一系列步驟,非

手把手npm發布一個包詳細教程

文件夾 模塊 .com png keyword tor 速度慢 index bsp 我們已經實現了路由的自動化構建,但是我們可以看到,一大串代碼懟在裏面。當然你也可以說,把它封裝在一個JS文件裏面,然後使用require(‘./autoRoute.js‘)給引入進來,那也行

100 行 Node.js 程式碼快速構建一個靜態網站生成器!

近日,我的一位同事向我尋求建議,她打算為自己構建一個部落格。於是,我對靜態網站生成器和部落格引擎進行了一番研究,發現 Hugo 是一個很不錯的選擇。但是,我的同事還有一些特殊要求,比如,她想要一個自定義的部落格網址和 CSS 主題。儘管這些 Hugo 都可以實現,但我並不打算花時間來學習它。我想自己

快回家過年了還沒有找到物件嗎?Python僅需三步有老婆

快回家過年了,還沒有找到物件嗎?教你用Python僅需三步,找個老婆回家過年。怎麼做找小編。 看下文。小夥伴們加油,新的一年快快樂樂,開開心心,寫程式碼沒有BUG。 沒錯,這不是教你去爬幾張美照,而是很嚴肅認真正經的教你如何追女孩? 喜歡上一個女孩,怎麼追到手當老婆?身為程式設計師,只

手把手SonarQube+Jenkins搭建--前端專案--程式碼質量管理平臺 (Window系統)

前言 網上教程大多介紹的是Linux系統下SonarQube+Jenkins如何使用,這是因為這兩款軟體一般都是部署在伺服器上,而大多數伺服器,採用的都是Linux系統。大多數伺服器用Linux的原因是: Linux伺服器上的許多軟體都是免費的,Window伺服器的軟體大多是付費的 基於Linux伺服器的解

Kindle 推送教程電子郵箱推送電子書

電子郵件 mail rec 實用 alt nal tom odi 批量 Kindle 推送是什麽意思?如何通過電子郵件附件推送?或許剛剛接觸 Kindle 的朋友對這個概念不是很清楚,其實所謂 Kindle 推送是指亞馬遜提供的一個“Kindle 個人文檔服務”,我們只需要

2018最新大神Python玩轉數據視頻教程

data arr 學習者 ui組件 array 字符 玩轉 統計 afr 本課程共分為5個模塊(實際課時為8周):Module 01: Python基礎本模塊主要討論Python的基本語言結構、數據類型、基本運算、條件和循環、函數和模塊等內容,用它們就可以寫一些有用的程序了

手把手Python實踐深度學習|深度學習視頻教程

視頻 ref ati pan 人工神經網絡 com 深度學習 encoder auto 手把手教你用Python實踐深度學習網盤地址:https://pan.baidu.com/s/1mkoC9ELXDglvTNN_xPUWlQ 提取碼: zgpy備用地址(騰訊微雲):ht

《阿里雲伺服器搭建》------實現Jenkins和github之間自動化部署專案

本系列教程的搭建環境為阿里雲伺服器,其他伺服器可作為參考。 本文主要講述實現Jenkins和github之間自動化部署專案 在瀏覽器中開啟我們的jenkins頁面。(http://ip:80/jenkins) 然後登陸管理員使用者。 為我們的專案建立一個job

十個例子統計學方法高效完成機器學習專案(下)【楚才國科】

五、資料準備: 資料一般不會直接拿來建模。為了改變資料的形狀或結構,使它更適用於選定的問題架構或學習演算法,需要對資料進行必要的轉化。 資料準備也會用到統計模型,例如: 1、縮放。例如標準化和規範化。 2、編碼。例如整數編碼和獨熱編碼。 3、變換。例如 Box-Cox

十個例子統計學方法高效完成機器學習專案(上)【楚才國科】

統計學和機器學習是兩個聯絡特別緊密的領域 事實上,這兩者的界限有時候非常模糊。然而有一些明顯屬於統計學領域的方法,不僅可用於機器學習的專案,並且極具價值。公平地說,需要統計學方法來有效地完成機器學習預測建模專案。 一、問題架構: 這包括了問題型別的選擇,例如是迴歸還是分類,也許

jenkins 自動化部署springboot專案

一、在你的本地電腦或者linux伺服器上下載安裝jenkins: 1. 首先去jenkins官網下載jenkins 包---->  linux jenkins war包安裝 2. 執行 nohup java -jar jenkins.war>jenkins

jenkins+WebHook+Coding自動化部署專案

                        &n

配置專案構建完成後郵件通知---- Jenkins自動化部署學習筆記(四)

  在之前的文章中,跟大家介紹了配置Jenkins程式, 使用Jenkins 進行自動化構建,構建成功後的檔案移動,這篇文章,我們來說說構建任務失敗怎麼郵件通知相關人員。 一、全域性郵件配置 在Jenkins 的主檢視下點選系統管理 -> 系統設定 ,在系統設定中找到

配置專案構建完成後檔案移動---- Jenkins自動化部署學習筆記(三)

  在前兩篇文章中,跟大家分享了在 Windows 系統上安裝 Jenkins 和使用 Jenkins 進行 Android 專案的編譯打包;相信可能會有人疑問,打包完成之後,我需要將 apk 檔案放入指定位置怎麼辦。   其實,Jenkins 功能很強大,它可以配置在打包完成之後將

自動化構建Android專案 ---- Jenkins自動化部署學習筆記(二)

  上篇文章跟大家分享了在Windows上安裝Jenkins的方法,這篇文章來跟大家分享一下利用Jenkins自動化構建Android專案: 一、所需準備: Android專案上傳至版本管理平臺,這裡我準備了Github上的Android專案https://github.co

Dubbo+Zookeeper架構—持續整合篇14—Jenkins自動化部署Jenkins編譯一個Web專案並遠端釋出到Tomcat

上一章講了如何編譯我們第一個專案 但是有時候我們不僅僅只是編譯更多的是需要釋出 在微服務普及之前我們最常用的就無非就是通過tomcat執行war格式的專案了,本章將介紹如何配置一個傳統的Java web專案併發布到遠端tomcat上。 這裡需要用到的外掛為:Deploy t

Jenkins自動化部署教程

本教程講解springboot框架打包成jar包進行自動化部署; 外掛安裝 工具配置 系統管理  》 全域性工具配置(可以使用預設配置) 配置jdk 配置maven 配置git Publish over SSH配置 系統管理  》 系統設定,找到Publis

jenkins 自動化部署 spring boot 專案(多圖)

前置條件 jenkins與部署專案所用伺服器為同一臺 將下載好的war包,放在tomcat的webapps目錄下,啟動tomcat 預設 8080 埠 wget http://mi

IDEA建立一個乾淨的web專案

教你用IDEA建立一個乾淨的web專案 1.開啟IDEA 2.點選Create New Project 3.點選Maven,勾上Create from archetype,選中字尾為webapp之後,點選Next。 4.填好之後點選Next。 5.直接點Next下一步 6.完成後點