構建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'] = "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構建任務並把它部署到對應的服務器上。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM