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}'`的時候,執行的結果就是:
命令會出現問題,我去掉命令中 “ | ” 兩邊的空格之後就沒有問題,希望有知道的老哥能告訴我原因!