什么是持續集成?
持續集成 Continuous Integration
簡單來說就是在開發過程當中,可以頻繁地將代碼部署到主干上。
持續交付 Continuous Delivery
指的是在持續集成的環境基礎上,將代碼部署到預發環境。
持續部署 Continuous Deoloyment
在持續交付的基礎上,將代碼部署到生產環境的自動化。
gitlab簡介
GitLab和GitHub一樣屬於第三方基於Git開發的作品,免費且開源,可通過 Web界面來進行管理git倉庫。
jenkins簡介
Jenkins是一個開源的、且基於JAVA代碼開發的持續集成系統,用於監控持續重復的工作,旨在
提供一個開放易用的軟件平台,使軟件的持續集成變成可能。
搭建gitlab
[root@gitlab ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python #安裝所需組件
[root@gitlab ~]# systemctl start postfix #開啟postfix郵件服務
[root@gitlab ~]# systemctl enable postfix
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm #安裝gitlab
[root@gitlab ~]# rpm -ivh gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb #配置訪問路徑,第十三行紅色部分配置成本機ip地址,也可以改為自定義的域名
[root@gitlab ~]# gitlab-ctl reconfigure #重置gitlab
http://192.168.100.102 #訪問gitlab
使用gitlab
gitlab-ctl stop #關閉gitlab
gitlab-ctl start #啟動gitlab
gitlab-ctl restart #重啟gitlab
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb #主配置文件
/var/log/gitlab #日志地址
gitlab-ctl reconfigure #慎用!!!
gitlab設置中文頁面如下↓
配置郵件報警
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com" #SMTP服務器
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "2468154124@qq.com" #郵箱賬號
gitlab_rails['smtp_password'] = "deuyzxdrnlvdecdf" #這個授權碼要去qq郵箱里面才可以得到
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '2468154124@qq.com' #郵箱賬號
[root@gitlab ~]# gitlab-ctl reconfigure #重載gitlab
[root@gitlab ~]# gitlab-rails console #登錄控制台發送測試郵件
irb(main):001:0> Notify.test_email('2468154124@qq.com', 'test', 'biubiubiu').deliver_now
#標題內容
#進郵箱可以看到剛剛編輯的郵件已經送到。
修改郵箱默認為admin@example.com,修改成我們自己的創建組時會發送郵件警告
創建一個群組
##來郵件了
##添加新成員
將用戶test1添加到剛剛創建的test組里
Gitlab用戶在組中有五種權限:
Guest、Reporter、Developer、Master、Owner
Guest:可以創建issue、發表評論,不能讀寫版本庫
Reporter:可以克隆代碼,不能提交,QA(測試人員)、PM(主管或者產品經理)可以賦予這個權限
Developer:可以克隆代碼、開發、提交、push,RD(研發人員)可以賦予這個權限
Master:可以創建項目、添加tag、保護分支、添加項目成員、編輯項目,核心RD負責人可以賦予這個權限
Owner:可以設置項目訪問權限 - Visibility Level、刪除項目、遷移項目、管理組成員,開發組leader可以賦予這個權限
##去網易郵箱設置密碼
##使用新賬號登錄gitlab
可以看到我們設置的測試組。
##創建項目
##在項目中新建一個
[root@gitlab ~]# ssh-keygen -t rsa ##配置密鑰,一直回車即可
[root@gitlab ~]# cat .ssh/id_rsa.pub ##查看公鑰
將公鑰上傳到gitlab上
[root@gitlab ~]# yum -y install git ##安裝git
[root@gitlab ~]# git clone git@192.168.100.102:test1/prod1.git 測試免密,從下圖可以看到從gitlab克隆到本地不需要密碼。
搭建jenkins
##因為jenkins是java寫的,所以我們需要先安裝jdk。
[root@jenkins ~]# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/ ##解壓jdk
[root@jenkins ~]# mv /usr/local/jdk1.8.0_171/ /usr/local/java/
[root@jenkins ~]# vim /etc/profile
##配置jdk環境變量
[root@jenkins ~]# source /etc/profile ##使環境變量生效
##查看java版本
[root@jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm ##安裝jenkins
[root@jenkins ~]# rpm -ivh jenkins-2.222.4-1.1.noarch.rpm
[root@jenkins ~]# vim /etc/sysconfig/jenkins
創建軟鏈並啟動jenkins
##jenkins默認使用8080端口
訪問jenkins並安裝相關插件
http://192.168.100.108:8080
安裝jenkins所需插件
Credentials # 簽名證書管理插件
Gitlab # 安裝后從 GitLab 獲取代碼
Git 和 Git Client # 用於 Jenkins 在 GitLab 中拉取源碼
GitLab Hook # GitLab 觸發 Jenkins 構建項目
Gitlab Authentication # GitLab 和 Jenkins 認證插件
SSH Plugin # 進程執行 Shell 腳本
Publish Over SSH # 用於通過 SSH 部署應用
將jenkins公鑰上傳到gitlab上
[root@jenkins ~]# ssh-keygen -t rsa
[root@jenkins ~]# cat .ssh/id_rsa #將私鑰上傳到jenkins上
##在jenkins上新建一個項目
##保存配置,下載一下代碼
##藍色代表成功,紅色則失敗
部署apache服務器
[root@httpd ~]# yum -y install httpd
[root@httpd ~]# systemctl start httpd
[root@jenkins ~]# ssh-copy-id root@192.168.100.103 ##jenkins配置與httpd免密
創建腳本
調用腳本
##驗證
在jenkins服務器上生成 Token,openssl rand 生成隨機密碼
注:-hex:輸出結果為16進制數據; 數字12是指定生成的隨機字符為12字節,即24個 16 進制個數。
##在jenkins上構建觸發器
當我們配置好觸發器后,只要我們在gitlab上修改代碼,gitlab自動通知Jenkins構建任務並把它部署到對應的服務器上。