1. 概述
本文主要介紹持續集成的搭建方式,採用Docker的方式去搭建Jenkins環境,另外會涉及到SpringBoot和Git等技術。
2. 什麼是持續集成
傳統的軟體開發流程如下:
項目經理分配模塊給開發人員每個模塊的開發人員並行開發,並進行單元測試開發完畢,將代碼集成部署到測試伺服器,測試人員進行測試測試人員發現bug,提交bug、開發人員修改bugbug修改完畢再次集成、測試
但是這樣就出現了如下問題:
模塊之間依賴關係複雜,在集成時發現大量bug測試人員等待測試時間過長軟體交付無法保障那我們又該如何解決上述問題呢?可以採用持續集成來解決上述問題,那持續集成又是什麼呢?大師Martin Fowler對 持續集成 是這樣定義的:
持續集成是一種軟體開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟體。
持續集成的好處:
自動化集成部署,提高了集成效率。更快地修復問題。更快地進行交付。提高了產品質量。本文通過下圖的模式進行持續集成的方案:
開發人員開發代碼,推送到Git伺服器中當Git伺服器中的代碼發生變化時,會觸發配置在Git伺服器中的鉤子地址,通知到JenkinsJenkins把代碼下載下來,通過Maven,build成Docker鏡像再把Docker鏡像推送到Docker倉庫中再從Docker倉庫中構建出可以運行的Docker容器
接下來,我們介紹下如何構建上述環境。
3. Docker安裝
本文中我們使用Centos7.x進行Docker的安裝,所以我們需要在VmWare中先安裝Centos7,這一步驟由讀者自行安裝。
3.1. Docker安裝步驟
(1)yum 包更新到最新
sudo yum update
(2)安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3)設置yum源為阿里雲
sudo yum-config-manager --add-repo [url=mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo]mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[/url]
(4)安裝docker
sudo yum install docker-ce
(5)安裝後查看docker版本
docker -v
3.2. 設置ustc的鏡像
ustc是老牌的linux鏡像服務提供者了,還在遙遠的ubuntu 5.04版本的時候就在用。ustc的docker鏡像加速器速度很快。ustc docker mirror的優勢之一就是不需要註冊,是真正的公共服務。
編輯該文件:
vi /etc/docker/daemon.json
在該文件中輸入如下內容:
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
3.3. Docker的啟動與停止
systemctl命令是系統服務管理器指令
啟動docker:
systemctl start docker
停止docker:
systemctl stop docker
重啟docker:
systemctl restart docker
查看docker狀態:
systemctl status docker
開機啟動:
systemctl enable docker
好了,到此為止,我們的Docker的基礎環境已經裝好,接下來我們準備下GitLab環境。
docker start docker-registry
4. GitLab
GitLab是一個利用 Ruby on Rails 開發的開源應用程式,實現一個自託管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目安裝。類似GitHub,能夠瀏覽原始碼,管理缺陷和注釋,可以管理團隊對倉庫的訪問。
4.1. GitLab安裝部署
官方支持的方式:
包含一切的RPM包: Download and install GitLab
手動安裝: doc/install/installation.md · master · GitLab.org / GitLab FOSS
第三方docker鏡像: sameersbn/docker-gitlab
鏡像可以快速實現部署並使用,適合於熟悉Docker的人使用,入門很快。
4.2. 下載GitLab鏡像
如果我們直接使用Docker的鏡像方式去安裝GitLab,我們還必須手動安裝一些相關軟體,例如:Redis,PostgreSql。我們這次選用docker-compose的方式去安裝gitlab。
4.2.1 安裝docker的docker-compose
docker-compose 是一個用來把 docker 自動化的東西。有了 docker-compose 你可以把所有繁複的 docker 操作全都一條命令,自動化的完成。
運行下邊兩條命令,即可安裝docker-compose
curl -L "github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
4.2.2 安裝wget
yum install wget
4.2.3 下載docker-compose.yml
wget [url=/raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml]raw.githubusercontent.co ... /docker-compose.yml[/url]
4.3. 運行docker-compose.yml文件
Compose 是一個用戶定義和運行多個容器的 Docker 應用程式。在 Compose 中你可以使用 YAML 文件來配置你的應用服務。然後,只需要一個簡單的命令,就可以創建並啟動你配置的所有服務。
使用 Compose 基本會有如下三步流程:
在 Dockfile 中定義你的應用環境,使其可以在任何地方複製。
在 docker-compose.yml 中定義組成應用程式的服務,以便它們可以在隔離的環境中一起運行。
最後運行docker-compose up,Compose 將啟動並運行整個應用程式。
docker-compose up -d
在瀏覽器中輸入192.168.25.130:10080/,可以觀察到下面的頁面,此時GitLab已經搭建成功。
4.4. 初始化密碼
初次訪問,會彈出下列頁面,我們需要為管理員root設置密碼,例如12345678。
4.5. 新建普通用戶
我們可以為gitlab添加普通用戶,切換到register選項卡中,註冊新用戶。
4.6. 新建項目
登陸之後,我們就可以新建項目了,我們輸入項目名,新建即可。