Jenkins構建CI/CD

Jenkins構建CI/CD

CI/CD是什麼?

CI(Continuous integration,中文意思是持續集成)是一種軟件開發時間。持續集成強調開發人員提交了新代碼之後,立刻進行構建、測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。

CD(Continuous Delivery, 中文意思持續交付)是在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境中。比如,我們完成測試後,可以把代碼部署到連接數據庫的環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境。

持續集成/持續發佈—開發(git) -->git主庫–>jenkins(git+jdk+tomcat+maven打包+測試)–>發佈到tomcat服務器

一、jenkins介紹

Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具 ,幫我們將代碼進行統一的編譯打包、還可以放到tomcat容器中進行發佈。
我們通過配置,將以前:編譯、打包、上傳、部署到Tomcat中的過程交由Jenkins,Jenkins通過給定的代碼地址URL,將代碼拉取到其“宿主服務器”(Jenkins的安裝位置),進行編譯、打包和發佈到web容器中。

1、Jenkins概述
是一個開源的、提供友好操作界面的持續集成(CI)工具,主要用於持續、自動的構建的一些定時執行的任務。Jenkins用Java語言編寫,可在Tomcat等流行的容器中運行,也可獨立運行。

jenkins通常與版本管理工具(SCM)、構建工具結合使用;常用的版本控制工具有SVN、GIT。jenkins構建工具有Maven、Ant、Gradle。

2、Jenkins目標

提高開發效率
過程控制

3、Jenkins特性
1.易於安裝   # 不需要安裝、不需要數據庫,只需通過java  -jar jenkins.war或部署到一個java容器中
2.易於配置   #所有的配置都可能通過jenkins提供的web界面完成,當然如果你喜歡,也可以通過手動修改xml文件進行配置
3.文件識別  # jenkins能跟蹤每次構建生成哪些jar包以及使用哪個版本的jar包
4.分佈式構建  # 支持Jenkins能夠讓多臺計算機一起構建/測試。
5.任務(Job)和構建(build) #任務:(Job)是Jenkins的一個執行計劃,是一系列操作的集合。構建:是Jenkins的任務的一次運行。
6.插件支持  # jenkins可以通過第三方插件擴展,也可以根據團隊需要開發插件

工作流程圖:

在這裏插入圖片描述

測試環境中:
1.開發者會將代碼上傳到版本庫中。
2.jenkins通過配置版本庫的連接地址,獲取到源代碼。
3.jenkins獲取到源代碼之後通過參數化構建(或者觸發器)開始編譯打包。
4.jenkins通過調用maven(Ant或者Gradle)命令實現編譯打包過程。
5.生成的war包通過ssh插件上傳到遠程tomcat服務器中通過shell腳本自動發佈項目。
生產環境:
測試環境將項目測試沒問題後,將項目推送到線上正式環境。
1.可以選擇手動。
2.也可以通過調用腳本推送過去。

二、部署Jenkins實戰

1、準備環境:

兩臺機器

git-server ----https://github.com/bingyue/easy-springmvc-maven

jenkins-server —192.168.246.212—最好是3個G以上

java-server -----192.168.246.210

https://github.com/bingyue/easy-springmvc-maven

1.部署jenkins服務器
安裝git客戶端:
[root@jenkins-server ~]# yum install -y git   #安裝git客戶端
[root@jenkins-server ~]# ssh-keygen
[root@jenkins-server ~]# ssh-copy-id -i [email protected]   #拷貝到後端java服務器
開始部署jenkins:
1.上傳jdk
[root@jenkins-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv jdk1.8.0_191/ java
2.安裝tomcat
[root@jenkins-server ~]# wget http://us.mirrors.quenda.co/apache/tomcat/tomcat-8/v8.5.51/bin/apache-tomcat-8.5.51.tar.gz
[root@jenkins-server ~]# tar xzf apache-tomcat-8.5.51.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv apache-tomcat-8.5.51/ tomcat
3.安裝maven
[root@jenkins-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@jenkins-server ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java
[root@jenkins-server ~]# cd /usr/local/java
[root@jenkins-server java]# mv apache-maven-3.5.4/ maven
設置變量:
[root@jenkins-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/java/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME
[root@jenkins-server ~]# source /etc/profile
驗證:
[root@jenkins-server ~]# java -version 
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@jenkins-server ~]# mvn -v 
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
下載jenkins的安裝包:
安裝jenkins:2.196  ----通過官網直接下載war包。
官網:http://updates.jenkins-ci.org/download/war/
[root@jenkins-server ~]# wget http://updates.jenkins-ci.org/download/war/2.196/jenkins.war
部署jenkins
[root@jenkins-server ~]# cd /usr/local/tomcat/webapps/
[root@jenkins-server webapps]# rm -rf * 
[root@jenkins-server webapps]# cp /root/jenkins.war .
[root@jenkins-server webapps]# ../bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

如果啓動了訪問提示

在這裏插入圖片描述

解決辦法在

[root@jenkins-server ~]# cd /usr/local/tomcat/conf/
[root@jenkins-server conf]# vim context.xml  -----添加如下內容:
    <Resources
        cachingAllowed="true"
        cacheMaxSize="100000"
    />

在這裏插入圖片描述
重啓tomcat

2.如果還是不行:

[root@jenkins ~]# cd .jenkins/updates/ 到jenkins的工作目錄下
[root@jenkins updates]# vim default.json"connectionCheckUrl":"http://www.google.com/" 改爲  "connectionCheckUrl":"http://www.baidu.com/"

3.要是還是不行:

需要你進入jenkins的工作目錄,打開-----hudson.model.UpdateCenter.xml
把http://updates.jenkins-ci.org/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json
每次改完記得重啓!

使用運行war的形式安裝jenkins,因爲偉大的牆出現,“該jenkins實例似乎已離線” 問題:

解決辦法:


需要你進入jenkins的工作目錄,打開-----hudson.model.UpdateCenter.xml將 url 中的 https://updates.jenkins.io/update-center.json 更改爲http://updates.jenkins.io/update-center.json,即去掉 https 中的 s 。
或者更改爲https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
是國內的清華大學的鏡像地址。
然後重啓tomcat

========================================================================

2.訪問界面: —需要多等一會

http://192.168.246.212:8080/jenkins

在這裏插入圖片描述

[root@jenkins-server ~]# cat /opt/jenkins/secrets/initialAdminPassword
b36b8b04c5b84e659701304dfe848999    ---複製這個密碼粘貼到上面提示的空格里面。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
我的密碼設置的爲123456

在這裏插入圖片描述

在這裏插入圖片描述

3.安裝插件
安裝插件:
所需的插件:
• Maven插件 Maven Integration plugin
• 發佈插件 Deploy to container Plugin
需要安裝插件如下:
=======================================================
安裝插件Deploy to container    ---支持自動化代碼部署到tomcat容器
GIT pligin  可能已經安裝
Maven Integration   :jenkins利用Maven編譯,打包所需插件
Publish Over SSH  :通過ssh連接
ssh  插件
安裝過程:
系統管理--->插件管理---->可選插件--->過濾Deploy to container---->勾選--->直接安裝

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
輸入插件名後按回車!

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
以上所有插件安裝完成

開始配置ssh

在這裏插入圖片描述

在這裏插入圖片描述
在最下面:

在這裏插入圖片描述
key:指的是jenkins服務器用哪個用戶去遠程連接程序服務器就是那個用戶的私鑰。

[root@jenkins-server .ssh]# cat id_rsa
4.添加遠程ssh-server:

在這裏插入圖片描述

5.配置jdk,maven命令,全局配置

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

6.構建發佈任務

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

7.調用mave命令

在這裏插入圖片描述

在這裏插入圖片描述

8.部署java服務器,做jenkins打包上線
[root@java-server ~]# mkdir -p /data/application
上傳jdk
[root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@java-server ~]# cd /usr/local/
[root@java-server local]# mv jdk1.8.0_191/ java
下載tomcat
[root@java-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/
[root@java-server ~]# cd /data/application/
[root@java-server application]# mv apache-tomcat-8.5.42/ tomcat
設置環境變量
[root@java-server ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/data/application/tomcat
[root@java-server ~]# source /etc/profile
測試:
[root@java-server ~]# java -version 
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
刪除tomcat默認發佈目錄下面的內容:
[root@java-server ~]# rm -rf /data/application/tomcat/webapps/*
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
創建目錄和腳本:
[root@java-server ~]# mkdir /opt/script  #創建腳本目錄
[root@java-server ~]# vim app-jenkins.sh   #創建腳本
腳本內容在後面
[root@java-server ~]# chmod +x app-jenkins.sh  #添加執行權限
[root@java-server ~]# mv app-jenkins.sh /opt/script/
9.回到jenkins頁面開始構建任務

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

10.登陸java-server服務器查看:

在這裏插入圖片描述

在這裏插入圖片描述

腳本內容:
[root@java-server script]# cat app-jenkins.sh 
#!/usr/bin/bash
#本腳本適用於jenkins持續集成,實現備份war包到代碼更新上線!使用時請注意全局變量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin"
updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
files_dir="easy-springmvc-maven"
files="easy-springmvc-maven.war"
job_path="/root/upload"

#Preparation environment
echo "Creating related directory"
mkdir -p $updata_path
mkdir -p $backup_path

echo "Move the uploaded war package to the update directory"
mv $job_path/$files $updata_path

echo "========================================================="
cd /opt
echo "Backing up java project"
if [ -f $webapp_path/$files ];then
	tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path
	if [ $? -ne 0 ];then
		echo "打包失敗,自動退出"
		exit 1
	else
		echo "Checking if tomcat is started"
		if [ -n "$tomcat_pid" ];then
			kill -9 $tomcat_pid
			if [ $? -ne 0 ];then
				echo "tomcat關閉失敗,將會自動退出"
				exit 2
			fi
		fi
		cd $webapp_path
		rm -rf $files && rm -rf $files_dir
		cp $updata_path/$files $webapp_path
		cd /opt
		$tomcat_run/startup.sh
		sleep 5
		echo "顯示tomcat的pid"
		echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
		echo "tomcat startup"
		echo "請手動查看tomcat日誌。腳本將會自動退出"
	fi
else
	echo "Checking if tomcat is started"
        if [ -n "$tomcat_pid" ];then
        	kill -9 $tomcat_pid
                if [ $? -ne 0 ];then
                	echo "tomcat關閉失敗,將會自動退出"
                       	exit 2
                fi
        fi
	cp $updata_path/$files $webapp_path
	$tomcat_run/startup.sh
        sleep 5
        echo "顯示tomcat的pid"
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
        echo "tomcat startup"
        echo "請手動查看tomcat日誌。腳本將會自動退出"
fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章