Jenkins+git 實現代碼自動化部署

一、持續集成與持續交付

持續集成

什麼是持續集成?

軟件開發中,集成是一個很可能發生未知錯誤的過程。持續集成是一種軟件開發實踐,希望團隊中的成員頻繁提交代碼到代碼倉庫,且每次提交都能通過自動化測試進行驗證,從而使問題儘早暴露和解決。

持續集成的好處是什麼?

持續集成可以使問題儘早暴露,從而也降低了解決問題的難度,正如老馬所說,持續集成無法消除bug,但卻能大大降低修復的難度和時間。

如何做到持續集成?

首先,持續集成需要:

1. 單一的代碼倉庫,團隊成員都像該倉庫提交代碼;

2. 自動化構建且構建過程需要包含自動化測試;

3. 有單獨的集成機器用於構建;

4. 保證構建速度不要太慢(曾經有一個項目構建需要20分鐘,就會很痛苦);

5. 在類產品環境進行測試;

6. 能夠方便獲取最新的可執行程序;

7. 可視化,大家都能看到構建過程及結果;

8. 自動化部署。

其次,我們通過以下步驟進行持續集成:

1. 程序員將代碼下載到本地,並在完成修改後提交代碼;

2. CI服務器監測代碼庫,並在有提交時自動觸發;

3. CI服務器對代碼進行構建,運行單元測試和集成測試;

4. CI服務器發佈可部署的artefact用於後續測試,並加上本次構建版本的標籤。

5. CI服務器通知團隊構建成功或者失敗;失敗發生時團隊需要儘快修復,以免耽擱後續的持續集成過程,因爲失敗時處於持續集成的暫停階段。

最後,需要就團隊責任達成共識:

1. 頻繁提交;

2. 提交之前確保測試通過;

3. 不在持續集成失敗時提交代碼;

4. 提交代碼後保證持續集成成功,不然不準回家😄

持續交付

什麼是持續交付?

持續交付是持續集成的擴展,指的是將通過自動化測試的軟件部署到產品環境。持續交付的本質是把每個構建成功的應用更新交付給用戶使用。在持續交付的世界裏,我們對完成的定義不是測試完成,而是交付到客戶手中。這裏需要注意的是,CD代表持續交付(Continuous Delivery)而不是持續部署(Continuous Deploy),因爲部署也包括部署到測試環境,而持續交付代表的是功能的上線,交付給用戶使用。

持續交付的好處是什麼?

持續交付的好處在於快速獲取用戶反饋;適應市場變化和商業策略的變化。開發團隊保證每次提交的修改都是可上線的修改,那麼決定何時上線,上線哪部分功能則完全由產品業務團隊決定。

雖然持續交付有顯著的優點,但也有不成立的時候,比如對於嵌入式系統的開發,往往需要軟硬件的配合。

如何做到持續交付?

1. 保證每次提交的修改都是可上線的修改。

2. 完善的測試(包括單元測試,組件測試,驗收測試)來測試新功能和進行迴歸測試;

3. 持續交付的前提條件是自動化的集成和部署;需要開發/測試/運維人員一起完成。

二、Jenkins安裝

首先安裝jdk和環境變量

在線安裝

第一步:下載
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
第二步:安裝
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins
第三步:配置
vim /etc/sysconfig/jenkins
啓動端口,默認爲8080
JENKINS_PORT="8080"
修改jenkins目錄
將JENKINS_HOME="/var/lib/jenkins" 改成JENKINS_HOME="/data/jenkins"
我這裏修改jenkins目錄到/data,創建對應的/data目錄
mkdir /datacp -a /var/lib/jenkins  /data/
用戶修改爲root
JENKINS_USER="root"
修改目錄權限
chown -R root:root /data/jenkinschown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
第四步:jdk建立軟鏈接
ln -s /usr/local/software/jdk1.8.0_131/bin/java /usr/bin/java
第五步:啓動
systemctl start jenkins


離線安裝

登錄:https://www.jenkins.io/zh/doc/

下載jenkins.war包,可以直接使用java -jar啓動,或者下載tomcat啓動

修改防火牆權限:使得外網可以訪問(8080爲默認端口,在實際中選擇啓動端口)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

使用tomcat啓動後,登錄

http://IP:8080/jenkins/

直接使用java -jar啓動 登錄http://172.19.2.91:8080/

從啓動日誌中查看jenkins的祕鑰,填入管理員密碼

點擊安裝推薦的插件

如下插件,缺少的插件如maven相關 git相關,通過系統管理--插件管理手動在線安裝

安裝git

yum -y install git

全局工具配置

配置git  可執行命令路徑

 

Maven的安裝,可以執行mvn 打包

 

Jenkins服務器的私鑰 公鑰配置


1.cd /root/.ssh
生成公鑰,私鑰
2.# ssh-keygen -t rsa 
按3個回車,密碼爲空。默認會在 ~/.ssh目錄生成兩個文件: id_rsa私鑰,id_rsa.pub公鑰。known_hosts文件會記錄ssh密鑰登陸的主機列表。
3. 導入公鑰到認證文件,更改權限
複製SSH密鑰到目標主機,開啓無密碼SSH登錄(目標主機爲部署應用的機器)
# ssh-copy-id user@host
在目標主機上更改文件權限
# chmod 700 ~/.ssh 
# chmod 600 ~/.ssh/authorized_keys
4. 測試
本地主機ssh遠程服務器
# ssh -v root@遠程服務器IP

 

Jenkins的系統配置---公鑰

應用服務器:密碼爲服務器登錄密碼

憑據配置---jenkins的私鑰

/home/maven-3.5.3/conf/settings_hsf.xml

配置maven私服倉庫,用來更新依賴的api

搭建安裝一個maven私服(依賴的api的jar包)

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