一、jenkins介紹
jenkins和持續集成的關系
Jenkins 是實現持續集成(CI)最流行的自動化工具,它負責自動構建、測試和部署代碼,確保團隊能頻繁且可靠地集成代碼變更。
持續集成和敏捷開發的關系
敏捷開發是一種"快速迭代、靈活應對變化"的 開發方法,強調小步快跑、持續交付。
持續集成是一種"自動合并代碼、立即測試"的 技術手段,確保代碼隨時能正常工作。
它們的關系就像:
-
敏捷是"怎么干活"(方法論),持續集成是"怎么保證干得好"(工具支持)。
-
敏捷說:"我們要每周交付新功能!" 持續集成說:"放心,每次改代碼我都自動檢查,不會翻車。"
沒有持續集成的敏捷 → 容易代碼混亂,迭代越快bug越多。
沒有敏捷的持續集成 → 能保證質量,但可能跟不上快速變化的需求。
最佳搭檔:敏捷靠持續集成實現"又快又穩",持續集成靠敏捷發揮最大價值。
流程整合
持續集成、持續交付
CI(持續集成) = 頻繁集成代碼 + 自動化測試(確保代碼質量)
CD (繼續交付)= 自動化發布(持續交付:手動點發布;持續部署:全自動發布)
Devops和CICD(持續集成、持續交付的)關系
DevOps 是一種軟件開發和運維(IT運營)的文化、實踐與工具的結合體,旨在通過自動化、協作和持續改進,縮短軟件開發周期,提高交付效率和質量。
-
CI/CD 是 DevOps 的核心技術實踐,是實現 DevOps 目標(快速交付、高質量)的關鍵工具鏈。
-
DevOps 是更廣泛的文化和方法論,包含 CI/CD 但不僅限于此。
二、jenkins準備
getlab、gethub區別
-
用 GitHub:想玩開源、蹭社區、輕量協作(我個人理解:就是一個社區倉庫,可以把想公開的項目放上去,且基礎的版的github不支持自托管)。
-
用 GitLab:要免費私有庫、自托管、或全套 DevOps(我個人理解:公司一般用這個管理項目,因為他支持部署在公司內部,私有化部署,保證代碼安全)。
對比項 | GitHub | GitLab |
---|---|---|
私有倉庫 | 免費但協作人數受限 | 完全免費,不限協作人數 |
CI/CD | 需配置 GitHub Actions | 內置強大 CI/CD(開箱即用) |
自托管 | 付費(Enterprise Server) | 免費(社區版 CE) |
企業級功能 | 依賴插件 | 原生支持(安全掃描、K8s 集成) |
適用場景 | 開源/小團隊 | 企業私有項目/完整 DevOps 流程 |
?jenkins持續集成流程圖
?環境準備
名稱 | ip地址 | 需要安裝的軟件 |
代理托管服務器 | 192.168.157.148 | gitlab-12.4.2 |
持續集成服務器 | 192.168.157.159 | Jenkins-2.190.3, JDK1.8, Maven3.6.2, Git, SonarQube |
應用測試服務器 | 192.168.157.150 | jdk1.8,tomcat8.5 |
三、gitlab
gitlab安裝
gitlab用來托管代碼服務。
一、安裝相關依賴和基本配置
yum -y install policycoreutils openssh-server openssh-clients postfix 二、啟動ssh服務&設置為開機啟動(很多機器都設置了)
systemctl enable sshd && sudo systemctl start sshd
查看是否設置成功或查看是否已設置
systemctl status sshd三、設置postfix開機自啟,并啟動,postfix支持gitlab發信功能(啟動這個時,主機名不要是ip,必須有主機名)
systemctl enable postfix && systemctl start postfix
查看是否啟動
systemctl status postfix 四、如果開啟了防火墻,開放ssh以及http服務,然后重新加載防火墻列表(沒開啟防火墻救不用設置)
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
下載和安裝(二進制方式安裝)
五、下載git包,二進制方式傳達/home/jenkins文件夾
二進制傳到/home/jenkins目錄
ll /home/jenkins
gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm安裝
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rp[root@k8s-master jenkins]# rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
警告:gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm: 頭V4 RSA/SHA1 Signature, 密鑰 ID f27eab47: NOKEY
準備中... ################################# [100%]
正在升級/安裝...1:gitlab-ce-12.4.2-ce.0.el6 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.*. *.*** ******** *****.****** *************** ********,,,,,,,,,***********,,,,,,,,,,,,,,,,,,,,*********,,,,,,,,,,,.,,,,,,,,,,,*******,,,,,,,,,,,,,,,,,,,,,*****,,,,,,,,,.,,,,,,,****,,,,,,.,,,***,,,,,*,._______ __ __ __/ ____(_) /_/ / ____ _/ /_/ / __/ / __/ / / __ `/ __ \/ /_/ / / /_/ /___/ /_/ / /_/ /\____/_/\__/_____/\__,_/_.___/Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:sudo gitlab-ctl reconfigureFor a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#上面提示讓我們修改/etc/gitlab/gitlab.rb,可以修改訪問端口
vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com' ---> external_url 'http://192.168.157.148:82'
#nginx['listen_port'] = nil ---> nginx['listen_port'] = 82
#分別是修改了訪問ip和端口,啟動gitlab是用nginx啟動的,所以nginx的端口也修改為82六、重載加載配置及啟動gitlab
gitlab-ctl reconfigure #這個過程會很慢
gitlab-ctl restart如果有防火墻,需要放開82端口
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
?瀏覽器訪問:http://192.168.157.148:82
第一次登錄需要設置新密碼,賬號是root。登錄成功如下:
設置中文
gitlab新增組、用戶和項目
創建組,并保存
?創建用戶
設置如下,其他參數可用默認值?
?保存后,在這里設置用戶密碼
組添加用戶成員
新增用戶并且分配權限:
Guest:可以創建issue、發表評論,不能讀寫版本庫
Reporter:可以克隆代碼,不能提交,QA、PM可以賦予這個權限
Developrr:可以克隆代碼、開發、提交、push,普通開發可以賦予這個權限
Maintainer:可以創建項目、添加tag、保護分支、添加項目成員、編輯項目,核心開發可以賦予這個權限
Owner:可以設置項目訪問權限-VisibilityLevel、刪除項目、遷移項目、管理組成員,開發組組長可以賦予這
個權限?
該用戶就可以登錄了,第一次登錄也是要重置密碼。