Linux中Jenkins的自動部署

一、安裝

1、添加yum repos,然後安裝

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

注:如果上面兩行執行成功、就不用執行下面的命令了

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/RedHat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

注:網絡不好就多試幾次、rpm沒有安裝的話、安裝一下在執行

yum install jenkins

2、如果未安裝java還需安裝java

yum install java

3、啓動和停止

service jenkins start
service jenkins stop
service jenkins restart

二、可能回會出現的問題

1、錯誤一:

Starting jenkins (via systemctl): Job for jenkins.service failed. See ‘systemctl status jenkins.service’ and ‘journalctl -xn’ for details. 
[FAILED]

出現上面的問題可能是未安裝JDK或者是Jenkins的JDK路徑配置有錯。jenkins配置文件中未正確配置jdk的路徑
查看jenkins配置:/etc/init.d/jenkins

在該配置中找到jdk的配置,jenkins有一個默認的jdk配置,這個配置與個人的jdk配置可能不一樣,只需要在該配置下增加自己的jdk配置即可。
在這裏插入圖片描述

2、錯誤二:

Starting jenkins (via systemctl): Warning: jenkins.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. 

使用以下命令解決:systemctl daemon-reload

三、默認參數修改

Jenkins的默認端口是8080、默認的Linux用戶爲jenkins,爲了防止端口衝突跟後續jenkins進行文件操作時的一些權限問題、我們將端口號改爲9999、默認用戶改爲root、配置文件位置:/etc/sysconfig/jenkins
在這裏插入圖片描述

四、初始化配置

1、訪問Jenkins:http://192.168.31.202:9999、按提示在對應的文件中複製出administrator的密碼
在這裏插入圖片描述
選擇安裝建議的插件。接下來就是安裝基本的插件
2、創建管理員的賬號
3、一些插件的安裝、點擊“系統管理”–>“插件管理”
在這裏插入圖片描述
在“可選插件”中找到Git、gitlab、Maven Integration plugin、Build pipeline Plugin:沒有這個,就沒有PipeLine視圖、Build Time Out:構建超時插件、Deploy to Container Plugin:部署容器插件、Email Extension Plugin:發送郵件插件、JDK Tool Plugin、PipeLine、Publish over ssh、Timestamper、Workspace Cleanup Plugin

五、Jenkins憑據配置、全局配置

1、配置gitLab連接
在“系統配置”–>“Gitlab”項中配置Gitlab
在這裏插入圖片描述
Connection name:隨意填寫
Gitlab host URL:gitLab的ip地址前面加上http如:http://192.168.31.201
Credentials:點擊添加
類型選擇:GitLab API token(如果獲取token請看下面)
點擊添加、然後點擊“Test Connection”、必須要測試成功在繼續往下配置

2、找到API token
登錄gitLab、在個人菜單中點擊“Settings”,在左導航連接點擊“Access Token”
Name:隨便填
Expires at:選擇過期時間
Scopes:只需要勾選api就好
在這裏插入圖片描述
點擊創建後,得到Token,記得保存一下,因爲刷新就沒了
在這裏插入圖片描述
3、生成ssh-key

ssh-keygen -t rsa -C "[email protected]" -b 4096 # 生成公鑰私鑰,注意雙引號內是個助記符根據需要修改
cd /root/.ssh # 進入ssh目錄
git ls-remote -h ssh://[email protected]/html/tamH5.git HEAD # 連一下git服務器,生成known_hosts文件
ll # 查看文件

如果沒有 known_hosts 文件之後Jenkins發佈時會有如下錯誤 “Host key verification failed.”
成功後進入jenkins目錄將剛纔創建的sshkey複製過來並將所有者指到jenkins賬號

cd /var/lib/jenkins # 進入jenkins的home目錄
mkdir .ssh # 創建ssh目錄存放sshkey文件,如果存在會報錯
cd .ssh
cp /root/.ssh/* . # 將root賬號下的sshkey文件複製過來,此時如果執行ll看一下這兩個文件所有這應該是root
chgrp jenkins * # 將key文件的組改爲jenkins(如果我們前面配置了默認賬號是root就不用)
chown jenkins * # 將key文件的所有者改爲jenkins(如果我們前面配置了默認賬號是root就不用)

此時pwd再ll應該看到如下內容
在這裏插入圖片描述
打開 id_rsa.pub 將其中內容複製到記事本中,訪問gitlab將剛纔複製的公鑰添加到ssh keys中
在這裏插入圖片描述
4、創建證書
在這裏插入圖片描述
kind:選擇 SSH Username with private key
  Username:隨便輸入,之後在創建item是記得住選擇那個即可
  Priveate key:選擇“Enter directly”後輸入私鑰,記住一定是私鑰 (按照上步驟在linux上生成密鑰後,會是一對其中帶pub後綴的是公鑰。id_rsa私鑰、id_rsa.pub公鑰)。在linux執行cat id_rsa將所有內容copy填入key中
  Passphrase:不填,如果填了每次都需要輸入密碼
  填好後點擊“ok”保存
在這裏插入圖片描述
5、系統配置–>全局工具配置
在這裏插入圖片描述
在這裏插入圖片描述

六、創建Maven項目

1、創建Maven項目
在這裏插入圖片描述
2、配置GitLab、默認選擇全局配置(GitLab API token對應的名稱)
在這裏插入圖片描述
3、源碼管理
Repository URL:複製gitlab上的shh地址
Credentials:使用我們之前配置好的sshkey全局憑證
Branch Specifier (blank for ‘any’):填寫對應版本的庫
在這裏插入圖片描述
4、構建觸發器:選擇如下
在這裏插入圖片描述
5、Build
這裏Build的Root POM文件一定要選對
/var/lib/jenkins/workspace/sailMavenTest/sail-pc/pom.xml
/var/lib/jenkins/workspace這個路徑是jenkins幫我們下載的項目源碼根目錄
sailMavenTest則是我們在jenkins中新建的Maven項目的名稱
剩下的就是代碼的路徑了,一定要選對你要進行構建的pom文件
在這裏插入圖片描述
下面是Post Steps
這裏選擇“Run only if build succeeds or is unstable”、並填寫要執行的腳本

#!/bin/bash 
#copy file and restart tomcat 

export JAVA_HOME=/data/java/jdk1.8.0_161
export CATALINA_HOME=/opt/jenkins/apache-tomcat-9.0.11
export CATALINA_BASE=/opt/jenkins/apache-tomcat-9.0.11
export BUILD_ID=dontKillMe

tomcat_path=/opt/jenkins/apache-tomcat-9.0.11
project=sail-web
war_name=sail-web.war 
war_path=http://192.168.31.202/:9999/jenkins/job/sailMavenTest/ws/targetserver_port=9988
file_path=/var/lib/jenkins/workspace/sailMavenTest/sail-pc/sail-web/target

$tomcat_path/bin/shutdown.sh 

sleep 5s 

cd $file_path

cp ${war_name} ${tomcat_path}/webapps/sail-web/

cd $tomcat_path/webapps/sail-web/

unzip -o ${war_name}

rm -rf ${war_name}

sleep 5s 

#$tomcat_path/bin/startup.sh

cd $tomcat_path/bin/
./startup.sh

echo "server restarted"

構建完成後執行該腳本、停掉tomcat、移動war包到tomcat、覆蓋解壓、刪除war包、啓動tomcat
如此構建完成
這裏需要手動點擊一下構建,檢查是否能構建成功
在這裏插入圖片描述
可以點擊構建的連接查看構建詳細信息
在這裏插入圖片描述
如果構建失敗,最好點擊“控制檯輸出”查看構建日誌,找出錯誤原因。
構建成功示例輸出
在這裏插入圖片描述
在這裏插入圖片描述

這裏我們只能手動構建,如何自動檢測代碼提交後馬上構建,請看下一章。

七、配置提交代碼自動構建

1、配置Jenkins訪問Token跟訪問URL
點擊“用戶列表”、選擇管理員用戶
在這裏插入圖片描述
點擊“設置”(用戶ID保存下來)
在這裏插入圖片描述
添加Token並保存下來(刷新就沒了)、
在這裏插入圖片描述
在Maven項目的“構建觸發器”中找到GitLab webhook URL(保存下來)
在這裏插入圖片描述

2、在gitlab中設置回調地址
gitlab收到代碼提交後會向我們配置的地址發送通知
地址樣例
http://hzw:[email protected]:9999/project/sailMavenTest
hzw:Jenkins用戶ID
11dd9cd1047920336f1fb8ee7bf1b79124:Jenkins配置的用戶的Token
@192.168.31.202:9999/project/sailMavenTest:Jenkins的GitLab webhook URL
將url放入gitlab項目的Integrations中(不用輸入下面的Secret Token)
完畢後,在頁面測試一下提交是否返回HTTP:200
在這裏插入圖片描述
至此,配置完成。

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