一、DevOps簡介
DevOps(英文Development和Operations是一組過程、方法與系統的統稱,DevOps是一組最佳實踐強調(開發、運維、測試)在應用和服務生命周期中的協作和溝通,強調整個組織的合作,以及交付和基礎設施變更的自動化,從而實現持續集成、持續部署和持續交付。
1、什么是持續集成
持續集成是指開發人員在程序的開發過程中,可以頻繁的將代碼部署集成到主干,並進程自動化測試
- 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減少重復過程以節省時間、費用和工作量
- 持續集成保障了每個時間點上團隊成員提交的代碼是能成功集成的。換言之,任何時間點都能第一時間發現軟件的集成問題,使任意時間發布可部署的軟件成為了可能
- 持續集成還能利於軟件本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續集成的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心
2、什么是持續交付
持續交付指的是在持續集成的環境基礎之上,將代碼部署到預生產環境。
3、什么是持續部署
在持續交付的基礎上,把部署到生產環境的過程自動化,持續部署和持續交付的區別就是最終部署到生產環境是自動化的。
二、部署簡介
一般網站部署的流程:
- 需求分析
- 原型設計
- 開發代碼
- 內網部署
- 提交測試
- 確認上線
- 備份數據
- 外網更新
- 最終測試
三、部署流程
jenkins工具平台可以實現全自動部署+測試,是一個可擴展的持續集成引擎,是一個開源軟件項目,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能,Jenkins非常易於安裝和配置。
由於jenkins是使用java代碼開發的,所以我們需要安裝java容器才能運行jenkins。
1、安裝java
sudo apt install openjdk-8-jdk
2、安裝Jenkins
包含在默認Ubuntu軟件包中的Jenkins版本往往落后於項目本身的最新版本。 為了利用最新的修復和功能,我們將使用項目維護的軟件包來安裝Jenkins。
首先,我們將存儲庫密鑰添加到系統。
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
當這兩個都到位時,我們將運行update
,以便apt-get
將使用新的存儲庫:
sudo apt-get update
最后,我們將安裝Jenkins及其依賴項,包括Java:
sudo apt-get install jenkins
3、開始Jenkins
使用systemctl
我們將啟動Jenkins:
sudo systemctl start jenkins
由於systemctl
不顯示輸出,我們將使用其status
命令來驗證它是否成功啟動:
sudo systemctl status jenkins
如果一切順利,輸出的開始應顯示服務處於活動狀態,並配置為啟動時啟動:
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
Active:active (exited) since Thu 2017-04-20 16:51:13 UTC; 2min 7s ago
Docs: man:systemd-sysv-generator(8)
4、設置Jenkins
要設置我們的安裝,我們將使用服務器域名或IP地址訪問Jenkins的默認端口8080
: http:// ip_address_or_domain_name :8080
默認端口是8080,有時候由於端口占用需要修改如下:
- 檢查 /etc/init.d/jenkins 腳本,修改 do_start 函數的 check_tcp_port 命令,端口號從 8080 換成 8082:
- 修改 /etc/default/jenkins 文件,將端口 8080 改成 8082
HTTP_PORT=8082
- 重啟Jenkins
sudo systemctl restart jenkins
我們應該看到“解鎖Jenkins”屏幕,顯示初始密碼的位置
在終端窗口中,我們將使用cat
命令顯示密碼:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
我們將從終端復制32個字符的字母數字密碼,並將其粘貼到“管理員密碼”字段中,然后單擊“繼續”。 下一個屏幕提供安裝建議的插件或選擇特定插件的選項。
我們將點擊“安裝建議的插件”選項,這將立即開始安裝過程:
安裝完成后,系統將提示您設置第一個管理用戶。 可以跳過此步驟,並使用上面使用的初始密碼作為admin
繼續,但是我們將花一點時間創建用戶。
創建一個admin用戶,密碼自己定義
一旦第一個管理員用戶到位,你應該看到一個“Jenkins准備好了!” 確認屏幕。
點擊“開始使用Jenkins”來訪問主要的Jenkins儀表板:
查看
[ubuntu@ip-172-31-43-146 ~]$ sudo netstat -plntu|grep java
tcp6 0 0 :::8080 :::* LISTEN 14788/java
此時,Jenkins已經成功運行。
四、創建項目
默認python3以及python的代碼包已經在服務器上下載好了。
我們訪問已經部署好的jenkins項目
1、新建item
選擇freestyle project
點擊確認之后我們可以看到如下界面
我們最需要關注的就是源碼管理,以及環境的構建,暫且不管項目的配置。我們先看一下gitee或者github的配置。
2、gitee上的公私鑰配置
源碼管理方面我們是從gitee中拉取項目代碼,如下圖所示:
所以我們需要將公鑰放在gitee中。
訪問我的gitee點擊個人設置,查看ssh公鑰。我是之前就添加進來的一個公鑰。
公私鑰如何產生。我們要在我們搭建了jenkins的服務器上生成公私鑰。
將公鑰放在gitee上。
3、jenkins的項目配置
回到jenkins的項目配置頁面
源碼管理中輸入我們的源碼ssh的url地址,如圖所示
添加憑證
然后發現我們的項目不紅了
但是要填寫這兩個內容(否則項目不會工作)
這兩個內容,我們用如下方式獲取
點擊保存,返回面板,我們部署一下項目嘗試。
點擊之后,我們查看工作空間,如下圖,我們的項目部署成功。
部署失敗的話,可以查看左側的日志欄。
4、啟動項目
配置啟動腳本。
點擊立即構建
訪問頁面。成功!
5、配置任務觸發時間表達式
繼續配置當前的項目
Jenkins 定時任務觸發時間表達式 ,H/2 * * * * (2分鍾檢查一下版本庫 如果有更新就不觸發 如果沒有更新就不觸發)
6、修改項目代碼
一旦修改項目,並push上去,jenkins就會每兩分鍾檢查一次是否改變,如果改變就會觸發構建!
如圖所示。