jenkins自動化搭建測試環境

簡述
概念
Jenkins是一個功能強大的應用程序,容許持續集成和持續交付項目,不管用的是什麼平臺。這是一個免費的源代碼,能夠處理任何類型的構建或持續集成。集成Jenkins能夠用於一些測試和部署技術。 
Jenkins是一種軟件容許持續集成。java

目的
一、持續、自動地構建/測試軟件項目,如CruiseControl與DamageControl。 
二、監控一些定時執行的任務。linux

什麼是持續集成?
持續集成是一個開發的實踐,須要開發人員按期集成代碼到共享存儲庫。這個概念是爲了消除發現的問題,後來出如今構建生命週期的問題。持續集成要求開發人員有頻繁的構建。最多見的作法是,每當一個代碼提交時,構建應該被觸發。git

搭建環境
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)github

搭建步驟:
centos7服務器配置
查看ssh協議服務,是否被sshd進程佔用web

netstat -anp|grep :22
1
啓動ssh服務apache

service sshd start
1
查看防火牆狀態vim

firewall-cmd --state
1
關閉防火牆centos

//臨時關閉
systemctl stop firewalld.service
//禁止開機啓動
systemctl disable firewalld.service 
1
2
3
4
安裝jdk
解壓jdktomcat

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@example.com"
1
2
生成公鑰

ssh-keygen -t rsa -C "email@example.com"
1
一直回車完成 
查看公鑰

cat ~/.ssh/id_rsa.pub
1
在碼雲寫入公鑰 

測試鏈接

ssh -T git@gitee.com
1
第一次須要輸入yes 
返回Welcome to Gitee.com, yourname! 則爲成功

在碼雲新建項目,並複製SSH鏈接 
進入保存源代碼的位置,克隆倉庫

git clone git@github.com: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

相關文章
相關標籤/搜索