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

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

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中。
  • 基於docker 的 jenkins-ansible-gitlab 實現自動化部署
    Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,比虛擬機更加強大,體積小,運行速度快,Docker 容器可以打包為鏡像文件(類似VM虛擬機的那些快照文件),遷移的時候我們只需要在新伺服器上安裝 Docker,就能把之前打包好的鏡像文件導入到 Docker 裡面,運行容器,就能實現訪問,不需要重新配置環境Jenkins:Jenkins 是一個開源軟體項目,是基於 Java 開發的一種持續集成工具,用於監控持續重複的工作
  • Springboot+Docker+GitLab持續集成上
    可以採用持續集成來解決上述問題,那持續集成又是什麼呢?大師Martin Fowler對 持續集成 是這樣定義的:持續集成是一種軟體開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而儘快地發現集成錯誤。
  • 玩轉gitlab + jenkins
    持續交付持續交付(Continuous delivery)指的是,頻繁地將軟體的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境的「類生產環境」(production-like environments)中。
  • Jenkins + Docker 持續集成 持續交付
    引言面對越來越多的微服務,越來越頻繁的版本發布,上周末在家倒騰了Jenkins+docker的持續集成和持續交付。實現了push tag 到git伺服器後坐等新版本發布的郵件通知,她會自動觸發工程構建和版本發布,那叫一個爽歪歪啊省心、省力。下面來和大家的一起分享一下我的實踐過程。持續集成原理持續集成, 簡稱CI(continuous integration).
  • GitLab+Jenkins+Harbor實現Docker鏡像自動化構建並推送遠程倉庫
    環境代碼託管平臺:GitLab持續集成自動化工具:Jenkins遠程(私有)鏡像倉庫:Harbor2. 前提條件Jenkins配置docker login實現過程3.>docker-maven-plugin</artifactId><!
  • Docker+Jenkins+GitLab+Maven+SpringBoot自動化構建鏡像與部署
    /springboot_devWORKDIR /home/devsoft/springboot_devEXPOSE 7011ADD .如:sh build.sh 192.168.1.235 springboot 0.0.1 7011 /home/jenkins/workspace/springboot_dev $IMG_NAME:$IMG_VERSION這個IMG_VERSION版本(tag)參數不指定默認latest注意點2:通常情況下Docker是默認執行Dockerfile,但是可以自定義後綴文件進行編譯,
  • Jenkins Pipeline (docker)安裝使用
    什麼是Pipeline,簡單來說,就是一套運行於Jenkins上的工作流框架,將原本獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的複雜發布流程。Pipeline的實現方式是一套Groovy DSL,任何發布流程都可以表述為一段Groovy腳本,並且Jenkins支持從代碼庫直接讀取腳本,從而實現了Pipeline as Code的理念。
  • Jenkins+Docker+git多分支實現springboot項目多環境快速交付
    jenkins slave上動態構建。版本發布在jenkins slave上進行,在master上通過標籤將構建任務綁定到指定的slave上;環境校驗根據git的test/master分支,分別對應任務名稱中的test/prod,以此來實現環境校驗;操作校驗分為發版/回滾/重啟,分別實現不同的功能需求; 發版/回滾/重啟在伺服器上執行的
  • Docker 搭建 Jenkins 實現自動部署
    自動化部署(持續集成/CI+持續交付/CD)不僅可以提升開發效率,讓程式設計師更專注產品與業務的開發,還可以節省很多運維成本以及提升運維效率。pull jenkins/jenkins:lts //最新版查看Jenkins鏡像docker imagesdocker inspect jenkins鏡像ID創建一個
  • 記一次Gitlab-CI集成K8S實錄
    2019年號稱雲原生元年,企業全面上雲,上雲就上雲原生。各大雲廠商雲原生事業如火如荼的進行著。Gitlab也不甘人後,很好的支持和構建雲原生項目。部署環境的搭建和配置向來繁雜,雲原生之前的年代,搭建和配置部署環境還存在大量人工而且重複地勞動,浪費了大量時間和精力在環境部署上,而且環境難以移植,微服務的興起更是加劇了環境搭建和配置的難度,對運維也是一大挑戰。
  • Jenkins持續集成
    1.1.2 什麼是持續集成持續集成(Continuous integration)簡稱CI,持續集成的思想是每天要多次將代碼合併到主幹,並進行集成、測試,這樣就可以提早發現錯誤,進行修正。持久集成也屬於DevOps持續集成的好處:1、自動化集成部署,提高了集成效率。2、更快的修復問題。3、更快的進行交付。4、提高了產品質量。
  • 搭建持續集成環境---Jenkins+Maven+SVN+Nexus
    這就是jenkins流行的原因,因為jenkins什麼插件都有。Hudson是Jenkins的前身,是基於Java開發的一種持續集成工具,用於監控程序重複的工作,Hudson後來被收購,成為商業版。後來創始人又寫了一個jenkins,jenkins在功能上遠遠超過hudson。.
  • Docker安裝Jenkins+Shell腳本自動化部署項目
    1.遠程連接linux伺服器,創建docker在主機的jenkins數據映射目錄cd /optmkdir jenkinscd jenkinsmkdir home2.給數據映射目錄授權docker用戶訪問權限,不然docker啟動jenkins時會報權限的錯。
  • 利用Jenkins生成maven項目鏡像及容器
    Jenkins是一個可擴展的持續集成引擎。主要用於:持續、自動地構建/測試軟體項目以及監控一些定時執行的任務。其擁有的特性包括:1 . 易於安裝-只要把jenkins.war部署到servlet容器,不需要資料庫支持。2 . 易於配置-所有配置都是通過其提供的web界面實現。3 .
  • 敏捷開發與Gitlab CI/CD持續集成
    敏捷開發的流程分為幾個階段:編碼 -> 構建 -> 集成 -> 測試 -> 交付 -> 部署。而CI/CD是實現這一理念的方法。持續集成CI(Continuous integration)持續集成(Continuous integration),簡稱CI,是一種軟體開發實踐。
  • Docker+jenkins小知識,講解通俗易懂,有必要收藏
    持續集成是軟體開發中一個非常重要的環節,我們都知道持續集成的這種方式,不僅僅是影響軟體開發的效率,實際上還會對我們軟體開發的流程會產生一定的影響,例如:我們所選擇的構建的方式,那麼你的應用程式的部署的方式,軟體開發與測試需要不斷地對應用進行持續構建,這些都會受我們持續集成的構建的方案所影響。
  • 從零入門Serverless快速構建GitLab持續集成環境
    同時,ASK 主要適用的場景有:在線業務彈性(視頻直播、在線教育);大數據計算(Spark);定時任務;CI/CD 持續集成。GitLab CI on ASK 的優勢說到 CI/CD,大家最熟悉的兩個工具,一個是 Jenkins,另一個是 GitLab CI,隨著 Devops 角色的流行,越來越多的企業採用 GitLab CI 作為持續集成的工具
  • docker 安裝 jenkins 就是這麼簡單?
    jenkins是一個開源軟體項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續集成變成可能docker如何安裝-y install docker-cedocker -vsystemctl start dockersystemctl enable dockerdocker versiondocker images
  • 用Docker、Nginx和Jenkins實現前端自動化部署
    部署目標搭建docker+Nginx+Jenkins環境,用於實現前端自動化部署的流程。具體的實現效果為開發人員在本地開發,push提交代碼到指定分支,自動觸發Jenkins進行持續集成和自動化部署。可以設置在部署完成後通過郵件通知,部署的成功與否,成功後會將打包後的文件上傳到伺服器,通過nginx反向代理展現頁面,失敗則會列印相關的錯誤日誌。