SpringBoot+GitLab+Docker+Jenkins實現持續集成上

2020-12-16 黑馬程式設計師

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. 新建項目

登陸之後,我們就可以新建項目了,我們輸入項目名,新建即可。

相關焦點

  • SpringBoot+GitLab+Docker+Jenkins實現持續集成下
    ADD /$ARTIFACTID-$ARTIFACTVERSION.jar $HOME_PATH/$ARTIFACTID.jarENTRYPOINT ["java", "-jar", "springboot_jenkins01.jar"]這一切都準備完畢之後,我們把項目push到上一節搭建好的GitLab中。
  • Jenkins持續集成
    1.1.2 什麼是持續集成持續集成(Continuous integration)簡稱CI,持續集成的思想是每天要多次將代碼合併到主幹,並進行集成、測試,這樣就可以提早發現錯誤,進行修正。持久集成也屬於DevOps持續集成的好處:1、自動化集成部署,提高了集成效率。2、更快的修復問題。3、更快的進行交付。4、提高了產品質量。
  • Docker安裝Jenkins+Shell腳本自動化部署項目
    (可選)給數據映射目錄授權docker用戶訪問權限,不然docker啟動jenkins時會報權限的錯。如果指定了容器內以root用戶運行的話,可以不用執行授權命令。sudo chown -R 1000 homejenkins容器內部的用戶id是1000,而主機上home目默認是root用戶才能訪問,需要授權給jenkins容器用戶。-R 代表home目錄及其子目錄一起授權。
  • Docker+jenkins小知識,講解通俗易懂,有必要收藏
    持續集成是軟體開發中一個非常重要的環節,我們都知道持續集成的這種方式,不僅僅是影響軟體開發的效率,實際上還會對我們軟體開發的流程會產生一定的影響,例如:我們所選擇的構建的方式,那麼你的應用程式的部署的方式,軟體開發與測試需要不斷地對應用進行持續構建,這些都會受我們持續集成的構建的方案所影響。
  • Jenkins+Docker+SpringCloud+K8s構建持續集成平臺
    Jenkins是什麼Jenkins是一個開源軟體項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續集成變成可能。Jenkins的6大特徵:開源的ava語言開發持續集成工具,支持持續集成,持續部署易於安裝部署配置可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署可方便web界面配置管理。
  • 手把手教你利用Docker+jenkins部署你的網站
    中文版docker pull jenkinszh/jenkins-zh這裡選擇的是中文的鏡像創建存儲目錄並授權(很重要)mkdir /home/jenkins_home:///var/run/docker.sock重啟dockersudo systemctl daemon-reloadsudo systemctl restart docker啟動jenkins,這裡用的是9090埠映射
  • Jenkins 憑證管理 - 看這一篇就夠了~
    Credential 安全為了最大限度地提高安全性,在Jenins中配置的 credentials 以加密形式存儲在Jenkins 主節點上(用Jenkins ID加密),並且 只能通過 credentials ID 在Pipeline項目中獲取這最大限度地減少了向Jenkins用戶公開credentials
  • 手把手教你用 Jenkins+K8S 打造流水線環境
    朋友的真實操作流程,使用 Jenkins 和 Kubernetes 完成持續集成和持續部署,有搭建,有入門,手把手教學文檔,幹得擰不出水來,分享一波。 本文作者:孫丹丹,女,單身,DevOps 運維工程師,CKA 認證。
  • Jenkins與GitLab CI/CD的深入評估和比較
    【51CTO.com快譯】近年來,隨著持續集成(CI)和持續交付(CD)在業界的廣泛採用,針對DevOps質量檢查的測試也在與時俱進。目前,在眾多CI/CD測試工具中,最常用的莫過於Jenkins和GitLab CI/CD這兩個工具。Jenkins發布於2011年,專注於CI/CD業務,一直是測試人員的首選。
  • 京東、華為都在用的Jenkins持續集成,但是真的有那麼好嗎
    >開源的Java語言開發持續集成工具,支持持續集成,持續部署。易於安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署,可方便web界面配置管理。消息通知及測試報告:集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告。
  • 微服務下的持續集成-Jenkins自動化部署GitHub項目
    三、為什麼要做持續集成持續集成服務(Continuous Integration,簡稱 CI)它綁定 Github 上面的項目,只要有新的代碼,就會自動抓取。然後,提供一個運行環境,執行測試,完成構建,還能部署到伺服器。
  • Jenkins Pipeline實例
    Jenkins 多分支流水線 Jenkins 流水線是一套插件,它支持實現和集成持續交付流水線到 Jenkins。流水線提供了一組可擴展的工具,用於通過流水線 DSL 將簡單到複雜的交付流水線建模為「代碼」。
  • Jenkins 多環境 CI/CD 架構設計
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫來源:https://url.cn/5VKO1Gu自動化部署主要是為了解決項目多、環境多、持續集成慢、部署操作麻煩、手動操作易出錯、自動化運維等問題。
  • 如何在 Kubernetes 上配置 Jenkins?
    作者 | Sudip Sengupta譯者 | 火火醬,責編 | Carol封圖 | CSDN 下載自視覺中國在本文中,我們將一起完成在Kubernetes上配置Jenkins的工作。https://docs.docker.com/get-docker/2.Kubernetes集群。如果沒有運行中的Kubernetes集群的話,請參閱章節「使用minikube創建Kubernetes集群」3.HelmCLI。可以按照下方連結中的步驟安裝Helm CLI。
  • 使用Kubernetes 和 Jenkins 創建一個 CI/CD 流水線
    CI/CD 表示持續集成/持續交付和/或部署。如果一個團隊不接入 CI/CD 流程就必須要在產生一個新的軟體產品時經歷如下的階段:產品經理(代表了客戶利益)提供了產品需要有的功能以及產品需要遵從的行為。文檔必須要越詳實越好。
  • 手把手教你在Linux下搭建Jenkins實現自動部署
    Jenkins是一個開源的自動化伺服器,可以用來輕鬆地建立持續集成和持續交付(CI/CD)管道。持續集成(CI)是一種DevOps實踐,在這種實踐中,團隊成員定期將他們的代碼更改提交到版本控制存儲庫,然後運行自動化的構建和測試。
  • 12個可以替代jenkins的CI/CD工具
    但是,與當前的用戶界面趨勢相比,它的界面已經過時,用戶界面也不夠友好(苦葉子推薦你用script pipeline:Jenkins之jenkinsfile基礎)。此外,Jenkin配置可能比較複雜,而且它還有許多其他缺點。這裡列出了幾種可以替代Jenkins的工具。這個列表折衷了具有流行特性和最新下載連結的商業和開源的continuos集成工具。
  • GitLab 13.7,增加MR審閱者,部署失敗時自動回滾等功能
    在GitLab.com上,這意味著每分鐘緩存約700,000個查詢,並將總請求時間縮短多達10%。對於執行100個以上查詢的請求,將請求持續時間縮短了11-31%,並將所有在資料庫副本上執行的SELECT語句的30%緩存了。GitLab 13.7中針對問題,項目,裡程碑以及其他方面還進行了性能改進。
  • GitLab 12.7發布支持父子管道、blame視圖、結構化日誌等
    可以利用該託管,實現自動縮放和安全的環境,可與GitLab在線倉庫在同一GCP基礎結構上的Windows虛擬機上運行CI/CD作業。 Windows Shared Runners已預先配置了各種軟體包,例如Windows的Chocolately軟體包管理器,Visual Studio 2019 Build Tools和Microsoft .Net Framework等。
  • Jenkins 從持續交付基金會畢業
    持續交付基金會宣布 Jenkins 成為其第一個畢業項目。