jenkins持續集成

持續集成

第1章 行話

1.1 什麼叫持續集成?           ---簡稱CI

在公司中,開發人員每天上班克隆一個自己的分支,下班前將分支進行合併,但是隨着開發人員越來越多,代碼也越來越多,每天下班之前要花很長時間進行人工合併代碼,爲了解決這樣的情況,將合併的週期縮短,以前每天合併,改爲每小時或者沒半小時進行合併,隨時隨地的將代碼進行合併,這種方法叫做持續集成

一句話:持續集成就是指,頻繁的將代碼集成到主幹!

1.1.1 持續集成的好處:

1.      快速的發現錯誤,沒完成一點更新,就集成到主幹,可以快速發現錯誤,定位錯誤也比較容易

2.      方式分支大幅度偏離主幹,如果不是經常集成,主幹又不斷的更新,會導致以後集成的難度變大,甚至難以集成

1.2 什麼叫做持續交付?         ---簡稱CD

藉助一個自動化的部署工具,jenkins

當開發上傳自己的代碼到gitlab,gitlab發消息通知jenkins,隨後jenkins從倉庫拉取代碼,最後全自動部署到測試服務器進行相關測試,並將測試結果通知運維和開發,這種方法叫做持續交付

1.3 什麼叫持續部署?           ---簡稱CD

持續部署是持續交付的下一步,指的是代碼通過評審以後,自動部署到生產環境

持續部署的目標是,代碼在任何時刻都是可部署的,可以進入生產進階

第2章 jenkins介紹

jenkins是一個用java編寫的開源的持續集成工具,在與oracle發生爭執後,項目從hudson項目獨立出來

jenkins提供了軟件開發的持續集成服務,他運行在servlet容器中(例如apache,tomgcat)他支持軟件配置管理,(SCM)工具,可以執行基於Apache antApachemaven的項目,以及任意的shell腳本和windows批處理命令,jenkins的主要開發者是川口耕介,jenkins是在mit許可證下發布的自由軟件

 

第3章 部署jenkins:

3.1 軟件下載地址:

官方倉庫  https://pkg.jenkins.io/redhat-stable/

清華大學開源軟件鏡像站  https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

3.2 進行安裝

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

rpm -ivh jenkins-2.73.1-1.1.noarch.rpm 

/etc/init.d/jenkins start

3.3 安裝插件

[root@jenkins tools]# tar xfP jenkins_plugins.tar.gz

[root@jenkins tools]# /etc/init.d/jenkins restart

3.3.1 rpm包安裝的內容:

[root@Jenkins ~]# rpm -ql jenkins

/etc/init.d/jenkins         # 啓動文件

/etc/logrotate.d/jenkins    # 日誌分割配置文件

/etc/sysconfig/jenkins      # jenkins主配置文件

/usr/lib/jenkins            # 存放war包目錄

/usr/lib/jenkins/jenkins.war   # war

/usr/sbin/rcjenkins         # 命令

/var/cache/jenkins          # war包解壓目錄 jenkins網頁代碼目錄

/var/lib/jenkins            # jenkins 工作目錄

/var/log/jenkins             # 日誌

配置文件說明:

[root@Jenkins ~]# grep "^[a-Z]" /etc/sysconfig/jenkins

JENKINS_HOME="/var/lib/jenkins"    #jenkins工作目錄

JENKINS_JAVA_CMD=""

JENKINS_USER="jenkins"             # jenkinx啓動用戶

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

JENKINS_PORT="8080"                # 端口

JENKINS_LISTEN_ADDRESS=""

JENKINS_HTTPS_PORT=""

JENKINS_HTTPS_KEYSTORE=""

JENKINS_HTTPS_KEYSTORE_PASSWORD=""

JENKINS_HTTPS_LISTEN_ADDRESS=""

JENKINS_DEBUG_LEVEL="5"

JENKINS_ENABLE_ACCESS_LOG="no"

JENKINS_HANDLER_MAX="100"          # 最大連接

JENKINS_HANDLER_IDLE="20"

JENKINS_ARGS=""

3.4 輸入http://10.0.0.64:8080進入web管理界面

第4章 web界面安裝:

4.1 查看解鎖jenkins的密碼:

[root@jenkins secrets]# cat /var/lib/jenkins/secrets/initialAdminPassword

8c85ece6417d4c229434b26eaa5806bd

image.png

1.1 輸入密碼登錄後,會有安裝插件的提示,先關閉頁面,在安裝完jenkins後安裝插件

image.png


1.1 關閉安裝插件後,選擇開始使用jenkins

image.png

1.1 安裝完成

image.png

1.1 安裝jenkins插件:    ---系統管理---管理插件

image.png

這裏直接上傳的軟件包

[root@jenkins tools]# tar xfP jenkins_plugins.tar.gz

[root@jenkins tools]# /etc/init.d/jenkins restart

第1章 jenkins配置

配置jenkins併發執行數量,提高執行效率

image.png

1.1.1 完成

image.png

1.1 設置郵件,在測試完成後,主動發送郵件通知測試情況

image.png

image.png

第1章 jenkins使用

1.1 創建一個新的任務

image.png

image.png

1.1 jenkinsgitlab聯合

[root@Jenkins ~]# ssh-keygen

Generating public/private rsa key pair.

 

Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 root@Jenkins

The key's randomart image is:

+---[RSA 2048]----+

|==....=* ..      |

|...o oo==.       |

|+.= . =++.o      |

|++ o   o.+ .     |

|... o   S .      |

|o.oo   o         |

| B+ . . .        |

|++++ .           |

|+Eo.             |

+----[SHA256]-----+

1.1.1 gitlab中添加公鑰信息

image.png

1.1.1 jenkins中添加私鑰

image.png

image.png


1.1.1 選擇ssh密鑰和證書,然後選擇直接輸入,將私鑰複製到下框中即可

image.png

1.1.1 選擇剛纔創建的證書,完成後,選擇構建

image.png

1.1.1 選擇構建,拉到最底部,選擇使用shell腳本

image.png

1.1.1 腳本內容:

image.png

1.1 創建測試環境

[root@jenkins ~]# mkdir /data/www -p

[root@jenkins ~]# chown -R jenkins.jenkins /data/www/

說明:這裏創建完目錄後把站點目錄的屬主和屬組都交給jenkins用戶,因爲jenkins程序運行是jenkins用戶,要注意安全問題,各種服務都一樣!

1.1.1 選擇構建後,讓每次構建完成後將結果發送給管理員

image.png

image.png

1.1 配置簡單的測試項目完成

1.1.1 部署執行過程的日誌    

image.png

jenkins項目所在目錄

[root@jenkins oldboyedu]# pwd

/var/lib/jenkins/workspace/oldboyedu          

1.1 查看部署結果

[root@jenkins oldboyedu]# ll /data/www/

total 8

-rw-r--r-- 1 jenkins jenkins  10 Mar 21 23:08 jiang.txt

-rw-r--r-- 1 jenkins jenkins 782 Mar 21 22:24 README.md

第2章 配置更新代碼以後自動上線自動部署

2.1 添加gitlab-token,配置gitlab認證

image.png

1.1.1 添加新憑證

image.png

1.1.1 gitlab設置中將token複製過來

image.png

1.1.1 將複製的token粘貼到api token,點擊ok即可

image.png

1.1 系統全局配置連接上gitlab

image.png

1.1 打開項目,編輯項目的構建觸發器

image.png

1.1.1 gitlab上配置連接jenkins,jenkinssecret tokenURL複製到gtilab

image.png

1.1.1 保存之前進行測試,測試成功後保存即可

image.png

1.1.1 gitlab上上傳文件,進行測試即可

image.png

1.1.1 在日誌中顯示是 Started by GitLab push by Administrator 即表示自動集成成功

第1章 代碼上線解決方案:

1.1 合理化上線方案:

1.      開發人員需在個人電腦的搭建LAMP環境測試開發好的網站代碼,並且在辦公室或者IDC機房的測試環境測試通過,最好有專職測試人員

2.      程序代碼上線要規定時間,這個上線時間需要從監控中分析數據得知,選擇流量低的時段進行上線

3.      代碼上線之前需要備份,網站程序有問題方便回滾,另外,從上線技巧上講,上傳代碼時儘可能先傳到服務器中網站的臨時目錄,傳完整後一步mv過去,或者通過做軟鏈接的方法實現

4.      儘量由運維人員管理上線,對於代碼的功能性,開發人員更在意,對於代碼的性能優化和上線後的穩定,運維更在意服務器的穩定,因此,如果網站宕機問題歸運維管理,就要讓運維上線,這樣規範更科學,否則,開發隨意更新,出了問題找不到根源


1.1 PHP程序代碼上線的具體方案:

對於php上線方法:發佈代碼時可以直接發佈到正式線臨時目錄,然後mv或者更改林肯的方式發佈到正式線上目錄,不需要重啓http服務,當然這也是新浪,趕集的上線方案

1.2 JAVA程序代碼上線的具體方案

對於java上線方法,較大公司需要分組平滑上線(如從負載均衡服務器上摘掉一般的服務器)發佈代碼後,重啓服務器進行測試,沒問題後,掛上上線好的一半,再換另外一半,如果前段有DNS智能解析,上線還可以分地區上線若干服務器,在逐漸普及到全國的服務器,這個被稱爲灰度發佈

1.2.1 灰度發佈:

通過ip地址定位,地區,返回指定網頁內容


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章