構建、部署到服務器並執行腳本

上一節,新建了一個job,同時配置了job的一些基本信息

當我們點擊“開始構建”後,將從git倉庫中將代碼clone到jenkins安裝目錄下的workspace下

具體路徑可以通過jenkins安裝目錄下的config.xml進行配置

這一節以一個完整的案例來講解如何實現自動部署

1、確保構建成功

有如下幾個需求:

(1). 如果我們的項目是多個項目放置在一起的,如果我只想要構建其中某個項目

(2). 多個項目同時構建

1.1. 單獨構建其中某個項目

接下來進行job配置修改

(1)構建命令配置

因爲我是在window下安裝的jenkins,所以這裏添加windows批處理命令,如果是安裝在Linux中,則添加shell命令

這裏如果有多個maven項目需要構建,那麼需要通過&&連接多個命令執行,否則在第一個構建完成後就不會執行第二個構建了,例如

cd D:\Software\jenkins-2.150.1\workspace\gs-om-ms\gs-om-core && D:\Software\apache-maven-3.2.2\apache-maven-3.2.2\bin\mvn clean install -DskipTests && cd D:\Software\jenkins-2.150.1\workspace\gs-om-ms\gs-om-ms && D:\Software\apache-maven-3.2.2\apache-maven-3.2.2\bin\mvn clean package spring-boot:repackage -DskipTests

如果不通過&&,則只會構建gs-om-core項目

這裏做了兩件事:

(a)進入需要構建的項目目錄下

(b)執行構建命令,這裏用本地安裝的maven,同時使用springboot的打包插件進行打包,同時跳過測試用例(實際不應該跳過)

springboot打包插件需要在pom.xml中配置springboot插件

<plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <version>1.5.4.RELEASE</version>
</plugin>

(2)SSH傳輸配置

source files:配置要傳輸的源文件,這裏是一個相對路徑,相對當前job工作目錄而言,即前面提到的代碼的workspace。這裏配置了工作目錄下gs-om-ms/target的jar文件,因爲我只需要對gs-om-ms進行構建,所以只傳輸這部分jar文件就行

remove prefix: 移除指定源文件的前綴,這裏移除gs-om-ms/target,這裏的話只會保留具體的文件,沒有路徑信息

remote directory:這個我們在SSH Server的時候配置了,也可以在這裏配置

exec command: 在遠程服務器中執行的命令,我們在服務器的/usr/local/www/gs/gs-om-ms/目錄下新建了reload.sh腳本,這個腳本就是爲了重新部署的,後面會講到

1.2 多個項目構建,類似單項目構建,無非就是本地構建命令放置在這裏執行,確保在本地測試通過

2、自動部署腳本編寫

因爲我們這裏使用的用戶是jenkins,權限比較少,所以類似於kill這種命令就無法執行,所以這裏簡單做法是:將jenkins設置成可以執行任何腳本且sudo時不需要密碼

在/etc/sudoers文件中

root    ALL=(ALL)  ALL

下方添加

jenkins  ALL=(ALL)   NOPASSWD:ALL

這樣用戶在執行sudo -s時不需要輸入密碼就能切換到root賬號

有了權限後,我們就可以開始編寫reload.sh腳本了

#!/bin/bash
cur_dateTime="`date +%Y-%m-%d-%H%m%s`"
#切換用戶到root
sudo -s<<EOF

#使path生效後才能使用dzy命令
source /etc/profile

#關閉已啓動的系統
dzy stop gs-om-ms

#將原先的jar備份
mv /usr/local/www/gs/gs-om-ms/target/gs-om-ms.jar /usr/local/www/gs/gs-om-ms/target/gs-om-ms-${cur_dateTime}.jar

#將新構建的jar重命名爲運行命令需要的jar
mv /usr/local/www/gs/gs-om-ms/target/gs-om-ms-1.0-SNAPSHOT.jar /usr/local/www/gs/gs-om-ms/target/gs-om-ms.jar

#啓動系統
dzy start gs-om-ms dev

echo "jenkins自動部署成功"
exit 0
EOF

有了以上步驟後,我就可以開始構建了

從構建輸出可以看出:先從遠程倉庫中pull代碼到本地種,然後執行我們編寫的windows批處理命令

構建成功後:

構建成功後,文件已經上傳到服務器中了,同時執行我們編寫的shell命令

3、問題

(1)本來是想直接使用root賬號來執行腳本的,這樣就不需要切換到root賬戶,但是使用root賬號,SSH Server一直連接不上,所以後面只能使用sudo -s<<EOF切換到root用戶

(2)構建過程中有些jar找不到,就需要考慮settings.xml配置文件的正確性以及已經下載的jar是否有問題

(3)自定義的腳本添加到/ect/profile中,但是並沒有生效,得通過source /etc/profile使其生效才能執行自定義的命令(dzy),否則會出現命令找不到的問題

4、總結

(1)本地確保構建成功後,配置相應構建命令;

(2)編寫運維腳本(這裏爲部署腳本,根據自己項目規則來定)

(3)配置jar傳輸完成後執行的腳本

 

本人開發的一個網站:編程之道,歡迎來踩!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章