1. 程式人生 > >Centos上搭建jenkins,並自動部署Spring Boot專案。(附遇到的問題及解決方案)

Centos上搭建jenkins,並自動部署Spring Boot專案。(附遇到的問題及解決方案)

最近嘗試自己搭建jenkins自動部署環境,將整個過程及遇到的問題記下來,希望能夠幫助到一些朋友!

本文使用的環境是:Cent os7.2,maven3.5.3,JDK8,jenkins2.136

首先需要在你的伺服器上配好相關的JDK與maven,還要在系統上安裝好git。

這些就不講怎麼配置了,CSDN上有許多相關文章,大家可以參考!

現在開始正式配置jenkins。

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

yum install -y jenkins

執行上面的命令,安裝jenkins。

jenkins的配置檔案在 /etc/sysconfig/jenkins 這裡,其中可以修改埠與其他資訊。

vi /etc/sysconfig/jenkins

我們需要的是埠與jenkins的使用者許可權,因為不修改許可權的話我們後面執行shell指令碼的時候會出現沒有操作許可權。

jenkins的預設使用者是jenkins,但事部分操作許可權沒有,我們後面需要執行的kill -9 XXX就沒有許可權,這裡最快捷的我將jenkins 的設定位root許可權。

首先修改JENKINS_USER="root"

jenkins的預設埠是8080,你可以修改沒有被佔用的埠,我這裡修改為9090,根據你們本地的實際情況進行配置。

設定完成之後,儲存檔案。

暫時不要先啟動jenkins,還需要設定jenkins的使用者分組,執行命令

gpasswd -a root jenkins

service jenkins start

這時候啟動完成之後,就可以在瀏覽器中訪問你的jenkins了。

首次進入會讓你輸入jenkins的初始密碼,密碼在/var/lib/jenkins/secrets/initialAdminPassword 這個檔案裡可以看到,找到這個檔案複製其中的密碼過來即可。

然後讓你選擇外掛,第一次先選擇預設的安裝推薦的外掛即可。

稍微等待一會兒,即可安裝完成!

配置好自己的使用者名稱與密碼即可!

我在其中也踩了很多坑,更多的原因是我自己知識面的短淺,但是我相信我自己能夠完成,一步步去找原因並解決。

進入系統管理,系統設定:

令牌證書,點選Add,Jenkins

ID和描述自己填寫即可,然後點選新增!

繼續,下面找到Pipeline Model Definition

一樣點選Add,Jenkins。

填寫你的gitee的使用者名稱與密碼即可!ID和描述一樣,隨便填寫!

然後到系統管理 》全域性工具配置

配置好自己的maven與jdk目錄即可。

在上面有個maven的全域性配置檔案,你可以配置自己的其他settings.xml的檔案。

然後應用儲存即可。

回到系統設定,找到外掛管理,需要安裝幾個外掛。

第一個外掛的作用是我們在構建完成之後可以執行一些shell指令碼,後面兩個外掛一個是maven一個是gitee的。

安裝完成之後,重啟一下jenkins。可以在安裝的時候選擇重啟,也可以在伺服器上執行

service jenkins restart

重新進入之後,選擇建立一個新的任務。

我們選擇構建一個maven專案。

按照前面碼雲的連結裡面的配置檔案,這裡就會出現一個gitee連結,選擇自己剛剛配置的即可。

遠嗎管理選擇git,填入你的專案倉庫地址,再選擇到我們上面配置的gitee的使用者名稱與密碼!

如果你的使用者名稱與密碼填錯了會顯示錯誤:

Failed to connect to repository : Command "git ls-remote -h https://gitee.com/xxxxxx.git HEAD" returned status code 128:
stdout: 
stderr: remote: [31mIncorrect username or password ( access token )[0m
fatal: Authentication failed for 'https://gitee.com/xxxxxx.git/'

執行maven的編譯命令:install -Dmaven.test.skip=true

選擇post build task,構建完成之後我們需要執行的shell指令碼。

Log text表示構建到與你填寫的內容一致時,就執行shell指令碼。

// 獲取正在執行的專案pid
pid=`ps -ef|grep uxiango-api-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}'`
// 結束該程序
kill -9 $pid
// 進入我們的檔案編譯目錄,具體的需要看你的專案路徑
cd /var/lib/jenkins/workspace/uxiango-api/uxiango-api/target/
// 執行jar檔案
nohup java -jar uxiango-api-0.0.1-SNAPSHOT.jar &

還遇到一個問題就是:

當我的指令碼第一段寫成:pid=`ps -ef |grep uxiango-api-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`的時候,執行的結果就是:

命令會出現問題,我去掉命令中 “ | ” 兩邊的空格之後就沒有問題,希望有知道的老哥能告訴我原因!