最近在安裝jenkins實現微服務的自動發布,記錄配置過程以免再次踩坑。
Centos7環境準備
jenkins、gitlab配置,全程使用ftpuser普通用戶操作
(1)安裝好jdk并配置好環境變量
安裝路徑/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
(2)安裝好maven并配置好setting文件,能連接maven倉庫
安裝路徑/usr/local/maven3.5/
安裝jenkins
從http://mirrors.jenkins.io/war下載最新的jenkins安裝包
cd /home/ftpuser
wget http://mirrors.jenkins.io/war/2.161/jenkins.war
Jenkins 的安裝不用做任何配置,war包自帶Jetty服務器,直接用java命令啟動服務即可
[ftpuser@localhost home]$ java -jar jenkins.war &
運行Jenkins 就啟動成功了。/home/ftpuser/.jenkins/workspace為jenkins的工作空間。第一次啟動Jenkins時,出于安全考慮,Jenkins會自動生成一個隨機的按照口令。注意控制臺輸出的口令,復制下來,然后在瀏覽器輸入密碼。
INFO:
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
0cdc37ieue6540c08cde6e4c96f46da0f
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
訪問瀏覽器訪問:http://localhost:8080/。輸入:0cdc37ieue6540c08cde6e4c96f46da0f
進入用戶自定義插件界面,建議選擇安裝官方推薦插件,因為安裝后自己也得安裝。
接下來是進入插件安裝進度界面,插件一次可能不會完全安裝成功,可以點擊Retry再次安裝,直到全部安裝成功。
等待插件安裝完成,配置用戶名密碼,保存即可完成安裝。
插件安裝
在上面安裝jenkins的過程中,已經安裝了大部分的插件。還有幾個插件需要我們手動安裝。
Git plugin、Maven Integration plugin、publish over SSH、SSH這四個插件。
系統管理->插件管理
搜索相應的插件直接安裝即可,可以在已安裝列表中查看插件是否已經安裝。安裝好這些插件我們就可以進行配置了。
全局配置
系統管理->全局工具配置
maven 配置
配置默認全局 settings文件,就是linux服務器上maven中的settings文件的路徑。
往下拉,配置maven的安裝路徑。
jdk安裝路徑配置
配置linux服務器上jdk的安裝路徑。
密鑰配置
Jenkins從gitlab或者git上clone代碼的時候,可以用密鑰登錄或者用戶名密碼登錄。在此我們用密鑰登錄。否則在下面配置maven的倉庫地址的時候就會報無權限錯誤。
Failed to connect to repository : Command “/usr/bin/git ls-remote -h git@gitlab.xxx:cmnn/admin.git HEAD” returned status code 128:
stdout:
stderr: ssh: connect to host gitlab.xxx port 22: Connection refused
fatal: Could not read from remote repository.
linux上生成密鑰對
linux上生成密鑰和在windows上生成密碼一樣,切換到當前用戶目錄下,進入.ssh目錄。
[ftpuser@localhost home]$ cd ~
[ftpuser@localhost ~]$ ls -a
. .bash_logout .bashrc .gitconfig .java jenkins.war .ssh
… .bash_history .bash_profile config .groovy .jenkins .m2
[ftpuser@localhost ~]$ cd .ssh
執行以下命令,一路enter默認即可。
[ftpuser@localhost .ssh]ssh-keygen -t rsa -C [“itpsc@qq.com”](mailto:)
[ftpuser@localhost .ssh]git config --global user.email [“itpsc@qq.com”](mailto:)
[ftpuser@localhost .ssh]git config --global user.name “itpsc”
itpsc@qq.com 是登錄gitlab賬號,這個根據自己的實際情況修改。
可以看到生成了公鑰id_rsa.pub和私鑰文件id_rsa,這兩個密鑰的作用是:公鑰需要添加到gitlab的SSHKey上,私鑰要配置到jenkins上。下面會講到。
[ftpuser@localhost .ssh]$ ls
config id_rsa id_rsa.pub known_hosts
[ftpuser@localhost .ssh]$
我們對gitlab的域名進行了修改,所以增加了一個config文件
gitlab配置公鑰
登錄gitlab,點擊Profiles settings->SSH Keys->ADD SSH KEY。將上述生成的id_rsa.pub文件中的內容粘貼到Key文本框中保存即可。
將公鑰配置到gitlab上后,可以用git命令克隆遠程倉庫的代碼驗證是否能連接上gitlab。可能會遇到“Bad owner or permissions on /home/ftpuser/.ssh/”的錯誤,解決辦法是修改.ssh目錄的權限。
[ftpuser@localhost ~]$ chmod 600 *
jenkins配置全局密鑰
憑據 ->添加憑據
輸入任意的Username,將上述生成的id_rsa中的內容粘貼到Private Key中,保存。
到此,密鑰的配置已經完了,下面創建maven項目。
新建maven項目
登錄jenkins,新建一個項目,選擇“構建一個maven項目”
General配置
勾選丟棄久的構建,填寫保存構建的天數和最大個數,這個數可以按自己的需求配置。比如“保存構建的天數”設置為5,表示保存5天內的構建記錄,更早的構建記錄就會被丟棄。
源碼管理
將項目的gitlab倉庫地址復制到URL輸入框中,選擇Credentials,也就是上面創建的全局密鑰,填寫發布分支。
構建觸發器
勾選Build whenever a SNAPSHOT dependency is built
構建環境
Build
Root POM填寫pom.xml
Goals and options 填寫clean install -Dmaven.test.skip=true -Ptest,意思是排除測試的包內容。
Post Steps
方式1:
這個配置是為了構建成功后,自動執行腳本運行jar包,達到自動發布的目的。
nohup java -Dfile.encoding=utf-8 -jar
/home/ftpuser/.jenkins/workspace/admin/target/admin-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev > /dev/null 2>&1 &
注意我們這里采用的是“nohup … > /dev/null 2>&1 &”命令,它的作用是jenkins執行完shell腳本后結束構建任務,且讓java進程后臺進行。否則jenkins的job無法結束,一直處于構建狀態。到此項目配置完了,就可以開始構建項目了。
方式2:
Command部分
#!/bin/bash
cd /home/ftpuser/deploy
./stop.sh
./replace.sh
echo “Execute shell Finish”
BUILD_ID=dontKillMe nohup /home/ftpuser/deploy/start.sh &
在/home/ftpuser/deploy目錄下增加stop.sh、start.sh、replace.sh三個腳本文件。
stop.sh
echo “>>>>>>>>Stopping vpclub-wx-admin>>>>>>>>>>>>>”
pid=ps -ef | grep vpclub-wx-admin-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'
if [ -n “$pid” ]
then
echo “kill -9 的pid:” $pid
kill -9 $pid
fi
replace.sh
echo “>>>>>>>>Copy vpclub-wx-admin>>>>>>>>>>>>>”
cp /home/ftpuser/.jenkins/workspace/vpclub-wx-admin/target/vpclub-wx-admin-0.0.1-SNAPSHOT.jar /home/ftpuser/deploy
startup.sh
echo “>>>>>>>>Start vpclub-wx-admin>>>>>>>>>>>>>”
java -jar /home/ftpuser/deploy/vpclub-wx-admin-0.0.1-SNAPSHOT.jar
安全配置
安全配置,新增用戶,給用戶配置權限。
新建用戶
系統管理->管理用戶->新建用戶。
系統管理->全局安全配置->授權策略->項目矩陣授權策略。點擊“Add user group”添加用戶并勾選相應的權限。一般開發人員給read、view與build的權限就可以,這個可以根據需求配置。
啟用項目安全
啟用項目安全的目的是,讓指定的人可以操作相應的項目。點擊已創建好的maven項目->配置,General 標簽下,勾選“啟用項目安全”并給該項目配置并授權用戶操作。
jenkins還有很多強大的功能,也是springboot推薦使用的自動化部署工具。到此jenkins在centos7上的安裝,以及與gitlab的配置介紹完了。