1. 程式人生 > >[轉] 基於Gitlab CI搭建持續集成環境

[轉] 基於Gitlab CI搭建持續集成環境

dir 過程 tabs dep pac hat pip 顯示 提高

[From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577

前言

本文是在12月12號迅雷@趙兵在前端早讀課第三期Live中提到的關於CI構建的,可能這部分在不同公司由不同的崗位負責,剛好如果你沒遇到你可以看看。

@趙兵,來自迅雷前端團隊。是一個熱愛前端技術,喜歡造輪子,愛折騰的人,也是一個奉行“懶惰使人進步”的懶人工程師。

正文從這開始~

本文簡單介紹了持續集成的概念並著重介紹了如何基於 Gitlab CI 快速構建持續集成環境,主要介紹了 Gitlab CI 的基本功能入門操作流程。

本文提到的Gitlab版本為8.x,新版的Gitlab界面可能會有所不同。

什麽是持續集成?

技術分享圖片

持續集成(Continuous Integration,簡稱CI)指的是,頻繁地(一天多次)將代碼集成到主幹。

持續集成的好處主要有兩個:

快速發現錯誤

每完成一點更新,就集成到主幹,可以快速發現錯誤,定位錯誤也比較容易

防止分支大幅偏離主幹

如果不是經常集成,主幹又在不斷更新,會導致以後集成的難度變大,甚至難以集成。

持續集成的目的,就是讓產品可以快速叠代,同時還能保持高質量。它的核心措施是,代碼集成到主幹之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。

持續交付、持續部署的概念

持續交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。

持續部署(continuous deployment)是持續交付的下一步,指的是代碼通過評審以後,自動部署到生產環境。

技術分享圖片持續交付、持續部署的概念

持續集成的原則

業界普遍認同的持續集成的原則包括:

  • 需要版本控制軟件保障團隊成員提交的代碼不會導致集成失敗。常用的版本控制軟件有 git、svn 等;

  • 開發人員必須及時向版本控制庫中提交代碼,也必須經常性地從版本控制庫中更新代碼到本地;

  • 需要有專門的集成服務器來執行集成構建。根據項目的具體實際,集成構建可以被軟件的修改來直接觸發,也可以定時啟動,如每半個小時構建一次;

  • 必須保證構建的成功。如果構建失敗,修復構建過程中的錯誤是優先級最高的工作。一旦修復,需要手動啟動一次構建。

持續集成系統的組成

由此可見,一個完整的構建系統必須包括:

  • 一個自動構建過程,包括自動編譯、分發、部署和測試等。

  • 一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時作為構建過程的素材庫。

  • 一個持續集成服務器。

GitLab CI介紹

技術分享圖片GitLab CI流程圖

GitLab CI是 GitLab 提供的持續集成服務,只要在你的倉庫根目錄 創建一個.gitlab-ci.yml 文件, 並為該項目指派一個Runner,當有合並請求或者 push的時候就會觸發build。

這個.gitlab-ci.yml 文件定義GitLab runner要做哪些操作。 默認有3個[stages(階段)]: build、test、deploy。

當build完成後(返回非零值),你會看到push的 commit或者合並請求前面出現一個綠色的對號。 這個功能很方便的讓你檢查出來合並請求是否會導致build失敗, 免的你去檢查代碼。

大部分項目用GitLab’s CI服務跑build測試, 開發者會很快得到反饋,知道自己是否寫出了BUG。

所以簡單的說,要讓CI工作可總結為以下幾點:

  • 在倉庫根目錄創建一個名為.gitlab-ci.yml 的文件

  • 為該項目配置一個Runner

完成上面的步驟後,每次push代碼到Git倉庫, Runner就會自動開始pipeline。

基於Gitlab CI快速搭建持續集成環境

開啟 Gitlab CI 功能

技術分享圖片開啟 Gitlab CI 功能

在自己的Gitlab中打開CI界面,比如迅雷的Gitlab,地址是 https://gitlab.xunlei.cn/ci/projects,找到自己項目後選擇 “Add project To CI”

項目 Gitlab CI 配置

技術分享圖片項目 Gitlab CI 配置

可以對項目的構建進行詳細配置,比如構建的時間表及需要 CI 進行持續集成的分支等,這裏配置了 對master和develop分支進行持續集成。

配置一個 Runner

GitLab CI 中,runner 是一個隔離的虛擬機器,用來配合 Gitlab CI 進行構建。

安裝 GitLab-Runner

安裝gitlab-ci-multi-runner

環境:centos 7, 使用了清華大學的鏡像

新建 gitlab-ci-multi-runner.repo

touch /etc/yum.repos.d/gitlab-ci-multi-runner.repo

將以下內容寫入文件

[gitlab-ci-multi-runner]
name=gitlab-ci-multi-runner
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

執行

sudo yum makecache
sudo yum install gitlab-ci-multi-runner
其他系統安裝

https://docs.gitlab.com/runner/install/

Gitlab CI Multi Runner 國內鏡像

https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-ci-multi-runner/

Runner 的區分

技術分享圖片Runner 的區分

  • 指定 Runner: 可以指定運行某一個Gitlab CI 的項目

  • 共享 Runner:可以運行所有的 CI 項目

Gitlab Runner 和 Gitlab 不能安裝在同一個機器

註冊一個指定的runner

註冊共享的Runner 需要 gitlab 的 admin 權限

sudo gitlab-ci-multi-runner register
  1. 輸入Gitlab CI地址, (e.g. https://gitlab.xunlei.cn/ci)

  2. 輸入項目CI token

  3. 輸入 Runner 描述(e.g. home.xl9.xunlei.com 測試runner)

  4. 輸入 Runner 標簽,可以多個,用逗號隔開(e.g. 10.10.34.91-dev)

  5. 輸入 Runner 執行的語言 (e.g. shell)

註冊完成之後,GitLab-CI立刻就會多出一條Runner記錄

啟動 runner

這裏把批量運行Runner這個功能安裝為一項服務

# Install runner as service and start it:cd ~
gitlab-ci-multi-runner install
gitlab-ci-multi-runner start

創建.gitlab-ci.yml

.gitlab-ci.yml 文件是什麽

.gitlab-ci.yml 用來配置 CI 用你的項目中做哪些操作,這個文件位於倉庫的根目錄。

當有新內容push到倉庫後,GitLab會查找是否有.gitlab-ci.yml文件,如果文件存在, Runners 將會根據該文件的內容開始build 本次commit。

.gitlab-ci.yml 使用YAML語法, 你需要格外註意縮進格式,要用空格來縮進,不能用tabs來縮進。

創建.gitlab-ci.yml

stages:  - test
- deploy
# 變量variables: DEV_RSYNC_PATH:"/data/deploy/xunlei.com/misc.xl9.xunlei.com/d/"# 所有 stage 之前的操作before_script: - npm set registry http://xnpm.sz.xunlei.cn
- npm install
# 代碼檢查lint: stage: test
script: npm run lint
# 單元測試unit: stage: test
script: npm run unit
# 部署測試服務器deploy_dev: stage: deploy
tags: -10.10.34.91-dev
only: - develop
script: - rsync -av --delete-after --exclude-from=/data/shell/home.xl9.xunlei_exclude.list . $DEV_RSYNC_PATH
- chmod -R 755 $DEV_RSYNC_PATH
- chown -R nobody:nobody $DEV_RSYNC_PATH
- find $DEV_RSYNC_PATH -type f -exec chmod 644 {} \;
- cd $DEV_RSYNC_PATH
- npm install

推送構建配置文件

配置好.gitlab-ci.yml文件之後,只要把它加入git後然後推送到遠程倉庫,CI就會開始自動化集成

查看可視化的構建過程

Gitlab CI 提供了可視化的構建過程的顯示可以隨時查看。

技術分享圖片查看可視化的構建過程

啟用構建郵件通知

Gitlab CI提高了一些 Service, 比如郵件通知,可以配置一系列接受郵件的地址和是否只有失敗的時候才發送郵件。

技術分享圖片啟用構建郵件通知技術分享圖片郵件內容

徽章

徽章,當Pipelines執行完成,會生成徽章,你可以將這些徽章加入到你的README.md文件或者你的網站。

技術分享圖片build status

結語

本文簡單介紹了持續集成的概念並著重介紹了如何基於 Gitlab CI 快速構建持續集成環境,主要介紹了 Gitlab CI 的基本功能和入門操作流程。

希望在進一步的學習和應用中與大家分享 Gitlab CI 的其它高級的應用。

延伸閱讀

  • https://doc.gitlab.cc/ce/ci/quick_start/README.html

  • http://www.jianshu.com/p/2b43151fb92e

  • https://scarletsky.github.io/2016/07/29/use-gitlab-ci-for-continuous-integration/

最後為你推薦

【第1123期】註釋的藝術

【第1135期】CSS簡史

關於本文
作者:@趙兵
原文:http://www.jianshu.com/p/705428ca1410

[轉] 基於Gitlab CI搭建持續集成環境