1. 程式人生 > 其它 >構建GitLab 與 Jenkins 持續整合環境

構建GitLab 與 Jenkins 持續整合環境

  什麼是持續整合?

  持續整合 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'] = "[email protected]" #郵箱賬號
   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'] = '[email protected]' #郵箱賬號

   

  [root@gitlab ~]# gitlab-ctl reconfigure   #過載gitlab

 

  [root@gitlab ~]# gitlab-rails console     #登入控制檯傳送測試郵件

  irb(main):001:0> Notify.test_email('[email protected]', 'test', 'biubiubiu').deliver_now

    #標題內容

 

    #進郵箱可以看到剛剛編輯的郵件已經送到。

 

  修改郵箱預設為[email protected],修改成我們自己的建立組時會發送郵件警告

 

 

   建立一個群組

 

  

 

 

 

           ##來郵件了

 

     ##新增新成員

 

 

 

  將使用者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 [email protected]: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 [email protected]      ##jenkins配置與httpd免密

  建立指令碼

 

 

 

    呼叫指令碼

 

 

 

   

 

 

     ##驗證

 

 

 

   在jenkins伺服器上生成 Token,openssl rand 生成隨機密碼

 

 

 

  注:-hex:輸出結果為16進位制資料; 數字12是指定生成的隨機字元為12位元組,即24個 16 進位制個數。

 

    ##在jenkins上構建觸發器

 

 

 

  

 

   

  當我們配置好觸發器後,只要我們在gitlab上修改程式碼,gitlab自動通知Jenkins構建任務並把它部署到對應的伺服器上。