jenkins自動化搭建測試環境
簡述
概念
Jenkins是一個功能強大的應用程式,允許持續整合和持續交付專案,無論用的是什麼平臺。這是一個免費的原始碼,可以處理任何型別的構建或持續整合。整合Jenkins可以用於一些測試和部署技術。
Jenkins是一種軟體允許持續整合。
目的
1、持續、自動地構建/測試軟體專案,如CruiseControl與DamageControl。
2、監控一些定時執行的任務。
什麼是持續整合?
持續整合是一個開發的實踐,需要開發人員定期整合程式碼到共享儲存庫。這個概念是為了消除發現的問題,後來出現在構建生命週期的問題。持續整合要求開發人員有頻繁的構建。最常見的做法是,每當一個程式碼提交時,構建應該被觸發。
搭建環境
Linux/Centos7
jdk-8u181-linux-x64.tar.gz
apache-maven-3.5.4-bin.tar.gz
git-2.9.5.tar.gz
apache-tomcat-9.0.10.tar.gz
jenkins.war(2.137)
搭建步驟:
centos7伺服器配置
檢視ssh協議服務,是否被sshd程序佔用
netstat -anp|grep :22
1
啟動ssh服務
service sshd start
1
檢視防火牆狀態
firewall-cmd --state
1
關閉防火牆
//臨時關閉
systemctl stop firewalld.service
//禁止開機啟動
systemctl disable firewalld.service
1
2
3
4
安裝jdk
解壓jdk
tar -xzvf jdk-8u181-linux-x64.tar.gz
1
修改/etc/profile
export JAVA_HOME=/opt/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
立即生效
source /etc/profile
1
安裝maven
解壓maven
tar -xzvf apache-maven-3.5.4-bin.tar.gz
1
修改/etc/profile
export JAVA_HOME=/opt/java/jdk1.8.0_181
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
重新載入配置
. /etc/profile
1
安裝git
安裝好必要的依賴包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
1
解壓git
tar -xzvf git-2.9.5.tar.gz
1
安裝git到/usr/local/git目錄
cd git-2.9.5
make prefix=/usr/local/git all
make prefix=/usr/local/git install
1
2
3
配置環境引數
方式一:
echo "export PATH=$PATH:/usr/local/git/bin" >>/etc/profile
source /etc/profile
1
2
方式二:
vim手寫修改 /etc/profile
export JAVA_HOME=/opt/java/jdk1.8.0_181
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export GIT_HOME=/usr/local/git
export PATH=$MAVEN_HOME/bin:$GIT_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
立即生效
source /etc/profile
1
初始化設定
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
1
2
生成公鑰
ssh-keygen -t rsa -C "[email protected]"
1
一直回車完成
檢視公鑰
cat ~/.ssh/id_rsa.pub
1
在碼雲寫入公鑰
測試連線
ssh -T [email protected]
1
第一次需要輸入yes
返回Welcome to Gitee.com, yourname! 則為成功
在碼雲新建專案,並複製SSH連線
進入儲存原始碼的位置,克隆倉庫
git clone [email protected]:michaelliao/gitskills.git
1
部署jenkins
方式一:直接用命令啟動 java -jar jenkins.war –httpPort=8080
http://localhost:8080 即可訪問
方式二:部署在中介軟體下
解壓apache-tomcat-9.0.10.tar.gz
tar -xzvf apache-tomcat-9.0.10.tar.gz
1
給apche-tomcat下所有檔案賦予可執行許可權
cd apache-tomcat-9.0.10
chmod a+x -R *
1
2
如果要指定jdk啟動tomcat可以在tomcat安裝的bin檔案中,找到setclasspath.sh和catalina.sh,vi編輯,在最前面加上需要指定的啟動jdk和jre的路徑,如下:
#指定jdk路徑
export JAVA_HOME=/opt/java/jdk1.8.0_181
export JRE_HOME=/opt/java/jdk1.8.0_181/jre
1
2
3
將jenkins.war放到tomcat的webapps目錄下,啟動tomcat
訪問:http://localhost:8090/jenkins
cat /root/.jenkins/secrets/initialAdminPassword
1
選擇推薦的外掛安裝
補裝外掛:
系統管理-外掛管理 rebuilder 作用:重新構建
系統管理-外掛管理 safe restart 作用:安全重啟
配置系統安全:
系統管理-全域性安全配置
新增使用者:
系統管理-管理使用者-新建使用者
為新使用者新增許可權
系統管理-全域性安全配置
jenkins測試任務
新增節點:
系統管理-節點管理-新建節點
啟動節點驗證Linux伺服器已經成功註冊到jenkins上
單擊剛才新增的節點 TestEnv ,再單擊啟動代理
如果報錯:
原因:
SSH代理的主機金鑰驗證
到目前為止,SSH代理是在不使用任何安全問題的主機金鑰驗證的情況下啟動的。SSH Slaves外掛 1.15的釋出通過向SSH代理引入主機金鑰驗證策略來解決這個問題。此新功能旨在防止中間人攻擊。
當您和您要連線的伺服器之間的伺服器偽裝成遠端主機時,會發生中間人攻擊。在這種情況下,您將連線到“中間人”,當您嘗試進行身份驗證並使用它們與遠端主機建立連線時,可以攔截您傳輸的資訊。
主機金鑰驗證是驗證遠端主機標識的過程。
主機金鑰儲存在SSH伺服器下/etc/ssh/,用於標識伺服器(Jenkins代理充當SSH伺服器)
在SSH客戶端保持主鍵列表是否信任下~/.ssh/known_hosts (詹金斯主充當SSH客戶端)
主機金鑰驗證的目的是確保您連線到正確的遠端主機 - 您要連線的主機。主機金鑰儲存在已知主機檔案中(通常在下面~/.ssh/known_hosts)。當SSH客戶端啟動與遠端主機的連線時,遠端主機(SSH伺服器)會發送其主機金鑰。然後,SSH客戶端將瀏覽此已知主機檔案,並查詢該主機的現有主機金鑰。如果找到一個,它將檢查遠端主機發送的主機金鑰是否與已知主機金鑰匹配。
解決:
檢視公鑰
cat /etc/ssh/ssh_host_rsa_key.pub
1
vim 編輯~/.ssh/known_hosts
vim ~/.ssh/known_hosts
1
新增ip 和公鑰進去
172.25.16.131 ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB…
1
參考:https://support.cloudbees.com/hc/en-us/articles/115000073552-Host-Key-Verification-for-SSH-Agents
新建任務驗證jenkins任務可以遠端執行在linux服務上
新建任務
單擊立即構建,檢視結果
實際應用
自動化部署流程圖
在專案根目錄新增deploy.sh檔案
#!/usr/bin/env bash
#編譯+部署erp專案站點
#需要配置如下引數
#專案路徑,在Execute Shell中配置專案路徑,命令pwd 就可以獲取該專案路徑
#export PROJ_PATH=這個jenkins任務在部署機器上的路徑
#輸入你的環境上tomcat的全路徑
#export TOMCAT_APP_PATH=tomcat在部署機器上的路徑
###base函式
killTomcat()
{
#pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
pid=netstat -anp|grep 8091|awk '{printf $7}'|cut -d/ -f1
echo "tomcat Id list :$pid"
if [ "$pid" = "" ]
then
echo "no tomcat pid alive"
else
kill -9 $pid
fi
}
cd $PROJ_PATH/erp
mvn pull
mvn clean install
#呼叫函式,停tomcat
killTomcat
rm -rf $TOMCAT_APP_PATH/webapps/erp
rm -f $TOMCAT_APP_PATH/webapps/erp.war
#rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
#複製新的工程
cp $PROJ_PATH/erp/target/erp.war $TOMCAT_APP_PATH/webapps/
#cd $TOMCAT_APP_PATH/webapps/
#mv erp.war ROOT.war
#啟動tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
新建Jenkins任務 DeployErp
#jenkins部署完service任務後,jenkins進場自動關閉,service程序不會被關閉
BUILD_ID=DONTKILLME
#載入配置引數
. /etc/profile
#配置執行引數,對照deploy.sh檔案
export PROJ_PATH=`pwd`
export TOMCAT_APP_PATH=/usr/local/apache-tomcat-8091
sh $PROJ_PATH/erp/deploy.sh
1
2
3
4
5
6
7
8
9
10
11
至此部署完成
---------------------
作者:借物小人
來源:CSDN
原文:https://blog.csdn.net/u012894692/article/details/81628994
版權宣告:本文為博主原創文章,轉載請