1. 程式人生 > >Jenkins持續整合與構建

Jenkins持續整合與構建

  1. jenkins環境
[[email protected] ~]# ls
anaconda-ks.cfg     jdk-8u171-linux-x64.tar.gz  TortoiseSVNv1.9.7.27907.zip
install.log         jenkins.war                install.log.syslog  Python-3.5.2.tgz

  1. 安裝Java(解壓,移動即可)
[[email protected] ~]# tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[
[email protected]
~]# cd /usr/local/ [[email protected] local]# mv jdk1.8.0_171/ jdk #全路徑驗證Java是否安裝成功 [[email protected] local]# /usr/local/jdk/bin/java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
  1. 配置Java環境變數/etc/proflle
[[email protected] local]# vim /etc/profile
#在末尾加上環境變數
export JAVA_HOME=/usr/local/jdk/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
[[email protected] local]# source /etc/profile
[[email protected] local]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

  1. jenkins的下載和執行
#啟動jenkins並後臺執行
[[email protected] local]# cd ~
[[email protected] ~]# nohup java -jar jenkins.war &> /tmp/jenkins.out &
[1] 1252
[[email protected] ~]# netstat -antup | grep java | grep -v grep
tcp        0      0 :::8080                     :::*                        LISTEN      1252/java           
tcp        0      0 ::ffff:192.168.239.12:39374 ::ffff:52.202.51.185:443    ESTABLISHED 1252/java           
tcp        0      0 ::ffff:192.168.239.12:39373 ::ffff:52.202.51.185:443    ESTABLISHED 1252/java           

訪問192.168.239.128:8080
在這裡插入圖片描述

[[email protected] ~]# cd .jenkins/secrets/
[[email protected] secrets]# cat initialAdminPassword 
13ff87a7518648f580cbe04fa37345d3        #訪問jenkins生成的隨機密碼

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在jenkins中,每個使用者都具有所有許可權。(常用於公司內部)
在這裡插入圖片描述
在這裡插入圖片描述

jenkins實現命令結果的視覺化

(1)新增ssh方式的被管理伺服器
系統管理---->系統設定----->找到Publish over SSH可以新增對應的操作伺服器
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述若單獨給新建立的www專案建立一個檢視
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
先【應用】,再【儲存】;點選【立即構建】
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

jenkins+svn實現持續化整合

需求:開發改完程式碼上傳(commit)到svn上,svn更新版本,(運維)jenkins就會自動去svn把最新版程式碼tar打包,然後批量部署到業務伺服器上(web1目錄和web2目錄)。分發完,將在專案中配置的命令,備份WEB伺服器的原網頁目錄,然後再把新傳送的程式碼覆蓋進去,就會自動上線(更新)。ansible將寫好的指令碼直接批量分配給業務伺服器。

  1. 設定svn的連線密碼並進行程式碼的部署測試
#web1和web2中安裝svn
[[email protected] ~]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]# yum -y install subversion
Loaded plugins: fastestmirror
Determining fastest mirrors
[[email protected] ~]# mkdir -p /application/svndata
[[email protected] ~]# mkdir -p /application/svnpasswd
[[email protected] ~]# svnadmin create /application/svndata/yunjisuan
[[email protected] conf]# cp authz /application/svnpasswd/
[[email protected] conf]# cp passwd /application/svnpasswd/
[[email protected] conf]# cp svnserve.conf{,.bak}
[[email protected] conf]# vim svnserve.conf
  12  anon-access = none          #禁止匿名訪問
  13  auth-access = write         #驗證訪問可寫
  20  password-db = /application/svnpasswd/passwd #密碼檔案位置
  27  authz-db = /application/svnpasswd/authz     #驗證檔案位置

#啟動svn
[[email protected] conf]# svnserve -d -r /application/svndata/    
[[email protected] conf]# netstat -antup | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      1101/svnserve       

 #在/application/svnpasswd/passwd檔案末尾追加如下內容:
[[email protected] conf]# vim /application/svnpasswd/passwd 
[users]
# harry = harryssecret  
# sally = sallyssecret
yunjisuan = 123456     #設定賬號密碼
benet = 123456  	    #設定賬號密碼
stu0001 = 123456       #設定賬號密碼
stu0002 = 123456	    #設定賬號密碼  

#編輯authz配置檔案進行授權,在authz末尾加入以下幾句程式碼
[[email protected] conf]# egrep -v "#|^$" /application/svnpasswd/authz
[aliases]
[groups]
sagroup = stu001,stu002         #新增本行,定義組名
[yunjisuan:/]                   #定義授權的範圍
yunjisuan = rw                  #使用者單獨授權
benet = r                       #使用者單獨授權
@sagroup = r                    #組使用者授權


在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
設定完畢後,應用儲存。
在windows上對svn的yunjisuan專案進行版本提交後
選擇立刻構建專案
在這裡插入圖片描述

模擬真實環境web伺服器的程式碼部署和備份

[[email protected] tmp]# mkdir -p /www/{html,backup}
 [[email protected] tmp]# tree /www/
 /www/
 ├── backup #html網頁目錄的備份放置目錄
 └── html #網頁目錄

在jenkins上設定webA,webB兩臺伺服器作為專案的構建目標
在這裡插入圖片描述
在這裡插入圖片描述
將以下shell指令碼程式碼複製到構建目標的Exec command裡

#備份web伺服器舊網頁目錄程式碼,並將部署到伺服器上的新程式碼覆蓋到網頁目錄裡
 cd /www
 /usr/bin/tar zcf html_$(date +%F-%H-%S).tar.gz html
 rm -rf html/*
 mv html_*.tar.gz backup/
 mv /tmp/test/* /www/html/

在這裡插入圖片描述
選擇立刻構建進行測試

#檢查webA和webB,程式碼構建情況
 [[email protected] tmp]# tree /www/
 /www/
 ├── backup
 │ └── html_2018-06-25-12-58.tar.gz #舊網頁目錄備份
 └── html
 └── mycode
 ├── python.py
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\270\200\357\274\211.png
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\272\214\357\274\211.png
 └── \344\272\221\350\256\241\347\256\227\346\234\237\344\270\2
55\346\236\266\346\236\204\346\250\241\347\211\210\357\274\210\344\27
0\200\357\274\211.png

 3 directories, 5 files

 [[email protected] tmp]# tree /www/
 /www/
 ├── backup
 │ └── html_2018-06-25-12-58.tar.gz #舊網頁目錄備份
 └── html
 └── mycode
 ├── python.py
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\270\200\357\274\211.png
 ├── \344\272\221\350\256\241\347\256\227\346\234\200\347\273\2
10\346\236\266\346\236\204\347\244\272\344\276\213\346\250\241\346\23
5\277\357\274\210\344\272\214\357\274\211.png
 └── \344\272\221\350\256\241\347\256\227\346\234\237\344\270\2
55\346\236\266\346\236\204\346\250\241\347\211\210\357\274\210\344\27
0\200\357\274\211.png

 3 directories, 5 files
模擬真實環境,開發進行程式碼回滾

在這裡插入圖片描述
(1)右鍵點選共享目錄選擇TortoiseSVN—>Show log
在這裡插入圖片描述
右鍵點選想要回滾的版本選擇Revert to this revision
在這裡插入圖片描述
在這裡插入圖片描述
此時你發現你的共享目錄裡的東西已經被回滾到了指定的版本。
最後我們千萬別忘記了右鍵點選共享目錄,將結果進行提交(SVN commit)
在這裡插入圖片描述
(2)重新進行jenkins專案構建,並檢查部署情況

[[email protected] tmp]# tree /www/
 /www/
 ├── backup
 │ ├── html_2018-06-25-12-58.tar.gz
 │ └── html_2018-06-25-13-15.tar.gz
 └── html
 └── mycode
 ├── python.py
 └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\2
07\346\241\243.txt

3 directories, 4 files

 [[email protected] tmp]# tree /www/
 /www/
 ├── backup
 │ ├── html_2018-06-25-12-58.tar.gz
 │ └── html_2018-06-25-13-15.tar.gz
 └── html
 └── mycode
 ├── python.py
 └── \346\226\260\345\273\272\346\226\207\346\234\254\346\226\2
07\346\241\243.txt

 3 directories, 4 files

在這裡插入圖片描述
至此,測試成功!

Jenkins實現ansible視覺化

(1)安裝jenkins ansible外掛,啟動ansible外掛
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
最後進入安裝介面最下方勾選,安裝完成時重啟Jenkins
在這裡插入圖片描述
(2)系統管理—>全域性工具配置---->配置ansible
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
(3)新建一個專案任務,使用ansible進行構建,跑個shell和copy模組
新建一個叫做ansible_test的新專案任務,過程略
在這裡插入圖片描述
進入專案的配置裡。構建一個基於ansible的任務
在這裡插入圖片描述
在這裡插入圖片描述
然後點選立刻構建功能,並檢視輸出結果
在這裡插入圖片描述
(4)新建一個專案任務,使用ansible-playbook進行構建

#準備一個playbook的配置檔案
 [[email protected] scripts]# cat /service/scripts/test.yaml
 ---
 - hosts: all
 tasks:
 - name: test jenkins ansible-playbook
 shell: echo "welcome to yunjisuan" >> /tmp/yunjisuan.txt

然後新建一個新的專案任務,進行配置
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
最後檢視構建的視覺化輸出結果
在這裡插入圖片描述