Tip: 此篇已加入.NET Core微服務基礎系列文章索引
一、CI, CD 與Jenkins
互聯網軟件的開發和發布,已經形成了一套標准流程,最重要的組成部分就是持續集成(Continuous integration,簡稱 CI) => 持續集成指的是,頻繁地(一天多次)將代碼集成到主干。
它的好處主要有兩個:
-
- 快速發現錯誤。每完成一點更新,就集成到主干,可以快速發現錯誤,定位錯誤也比較容易。
- 防止分支大幅偏離主干。如果不是經常集成,主干又在不斷更新,會導致以后集成的難度變大,甚至難以集成。
持續集成的目的,就是讓產品可以快速迭代,同時還能保持高質量。與持續集成相關的,還有持續交付和持續部署。
持續交付指的是:頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。它強調的是,不管怎么更新,軟件是隨時隨地可以交付的。
持續部署是持續交付的下一步,指的是代碼通過評審以后,自動部署到生產環境。它強調的是代碼在任何時刻都是可部署的,可以進入生產階段。
Martin Fowler 說:“持續集成並不能消除 Bug,而是讓它們非常容易發現和改正。”
Jenkins 是一款流行的開源持續集成(CI)與持續部署(CD)工具,廣泛用於項目開發,具有自動化構建、測試和部署等功能。官方網站:http://jenkins-ci.org/。
使用Jenkins的目的在於:
(1)持續、自動地構建/測試軟件項目。
(2)監控軟件開放流程,快速問題定位及處理,提升開發效率。
這里廢話不多說了,更多內容,可以參考這一篇文章《不甘寂寞的Jenkins:從持續集成到持續部署》
二、Jenkins的基礎安裝
PS: 這里采用的是基於CentOS7.x的安裝方式,非Docker安裝。
2.1 安裝Java環境
這里參考曉晨Master的《CentOS7安裝Java環境(JDK1.8)》,不再贅述安裝步驟,最終驗證效果:
Tip:里面需要注意的是為jdk創建軟鏈接!
2.2 安裝Git
yum install git
2.3 安裝Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins
安裝完成后提示信息:
默認安裝后的端口綁定的是8080,如果你想更改請進入文件編輯JENKINS_PORT屬性項。
vim /etc/sysconfig/jenkins
如果你使用的是root用戶(沒有單獨創建一個jenkins的用戶),那么建議進入上面的配置文件編輯JENKINS_USER屬性項將jenkins改為root。
2.4 配置Jenkins
(1)修改目錄權限:
chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
Tip:在 Shell 中,可以使用chown命令來改變文件所有者。chown命令是change owner(改變擁有者)的縮寫。-R代表進行遞歸( recursive )的持續更改,即連同子目錄下的所有文件、目錄都更新成為這個用戶組,常常用在更改某一目錄的情況。
(2)重啟Jenkins服務
service jenkins restart
ps -ef | grep jenkins
提示信息如下圖所示:
PS:啟動Jenkins
systemctl start jenkins
驗證啟動狀態:
systemctl status jenkins
2.5 初始化Jenkins
(1)訪問http://xxxx:8080/進行Jenkins的解鎖
可以通過下面的命令查看管理員密碼:
cat /var/lib/jenkins/secrets/initialAdminPassword
然后把這個密碼復制到Web界面中的文本框中去進入下一步
(2)自定義Jenkins => 這里選擇安裝推薦的插件
雙擊之后進入安裝過程,耐心等待:
(3)創建管理賬戶 => 也可以直接使用admin賬戶繼續
(4)安裝完成
(5)Jenkins主界面
至此,Jenkins的基本安裝與配置就到此結束,下一篇我們會結合ASP.NET Core與Docker來一個持續部署的實例。
三、小結
本篇簡單介紹了一下持續集成、持續交付與持續部署的基本概念,然后介紹了如何在CentOS7.x下安裝Jenkins並初始化Jenkins。下一篇會會結合ASP.NET Core、GitHub與Docker來一個持續部署的實例。
參考資料
佚名,《什么是持續集成?該怎么做?》
宋瀟男,《不甘寂寞的Jenkins:從持續集成到持續部署》
曉晨Master,《ASP.NET Core & Docker & Jenkins零基礎持續集成》
dev_zh,《安裝Jenkins遇到的坑》