1. 程式人生 > >SpringBoot+Docker+Git+Jenkins實現簡易的持續整合和持續部署

SpringBoot+Docker+Git+Jenkins實現簡易的持續整合和持續部署

努力了這麼久,但凡有點兒天賦,也該有些成功的跡象了。

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker03.png

前言

本篇文章引導你使用Jenkins部署SpringBoot專案,同時使用DockerGit實現簡單的持續整合和持續部署。(專案地址:sso-merryyou

流程圖如下:

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker02.png

  1. push程式碼到Github觸發WebHook。(因網路原因,本篇使用gitee
  2. Jenkins從倉庫拉去程式碼
  3. mavem構建專案
  4. 程式碼靜態分析
  5. 單元測試
  6. build映象
  7. push映象到映象倉庫(本篇使用的映象倉庫為網易映象倉庫)
  8. 更新服務

Jenkins安裝

下載jenkins

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker07.png

初始化密碼

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker04.png

選擇外掛

進入使用者自定義外掛介面,選擇第二個(因為我們本次構建使用的為Pipelines

勾選與Pipelines相關的外掛

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker05.png

等待外掛安裝完成

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker06.png

配置使用者名稱和密碼

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker08.png

全域性配置

系統管理-》全域性工具配置 配置Git,JDK和Maven

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker09.png

安全配置

系統管理-》全域性安全配置

  • 勾選Allow anonymous read access
  • 取消防止跨站點請求偽造

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker10.png

新建任務

新建任務-》流水線

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker11.png

構建指令碼

勾選觸發遠端構建 (WebHooks觸發地址),填寫簡單的Pipeline script

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker12.png

#!groovy
pipeline{
    agent any

    stages {

        stage('test'
){ steps { echo "hello world" } } } }

測試指令碼

立即構建

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker13.png

控制檯輸出

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker14.png

gitee整合WebHooks

新增SSH公匙

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker15.png

配置WebHooks

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker16.png

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker17.png

修改指令碼

修改Pipeline script

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker18.png

#!groovy
pipeline{
    agent any
    //定義倉庫地址
    environment {
        REPOSITORY="https://gitee.com/merryyou/sso-merryyou.git"
} stages { stage('獲取程式碼'){ steps { echo "start fetch code from git:${REPOSITORY}" //清空當前目錄 deleteDir() //拉去程式碼 git "${REPOSITORY}" } } stage('程式碼靜態檢查'){ steps { //虛擬碼檢查 echo "start code check" } } stage('編譯+單元測試'){ steps { echo "start compile" //切換目錄 dir('sso-client1') { //重新打包 bat 'mvn -Dmaven.test.skip=true -U clean install' } } } stage('構建映象'){ steps { echo "start build image" dir('sso-client1') { //build映象 bat 'docker build -t hub.c.163.com/longfeizheng/sso-client1:1.0 .' //登入163雲倉庫 bat 'docker login -u [email protected] -p password hub.c.163.com' //推送映象到163倉庫 bat 'docker push hub.c.163.com/longfeizheng/sso-client1:1.0' } } } stage('啟動服務'){ steps { echo "start sso-merryyou" //重啟服務 bat 'docker-compose up -d --build' } } } }

Pipeline的幾個基本概念:

  • Stage: 階段,一個Pipeline可以劃分為若干個Stage,每個Stage代表一組操作。注意,Stage是一個邏輯分組的概念,可以跨多個Node。
  • Node: 節點,一個Node就是一個Jenkins節點,或者是Master,或者是Agent,是執行Step的具體執行期環境。
  • Step: 步驟,Step是最基本的操作單元,小到建立一個目錄,大到構建一個Docker映象,由各類Jenkins Plugin提供。

測試

docker-compose up -d 啟動服務

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker19.png

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker20.png

修改內容效果如下:

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker03.gif

更多效果圖

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker21.png

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/docker/docker22.png

程式碼下載

推薦文章

https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/wechat/xiaochengxu.png

������關注微信小程式java架構師歷程
上下班的路上無聊嗎?還在看小說、新聞嗎?不知道怎樣提高自己的技術嗎?來吧這裡有你需要的java架構文章,1.5w+的java工程師都在看,你還在等什麼?

相關推薦

SpringBoot+Docker+Git+Jenkins實現簡易持續整合持續部署

努力了這麼久,但凡有點兒天賦,也該有些成功的跡象了。 前言 本篇文章引導你使用Jenkins部署SpringBoot專案,同時使用Docker和Git實現簡單的持續整合和持續部署。(專案地址:sso-merryyou) 流程圖如下:

Jenkins學習總結(3)——Jenkins+Maven+Git搭建持續整合自動化部署

前言     持續整合這個概念已經成為軟體開發的主流,可以更頻繁的進行測試,儘早發現問題並提示。自動化部署就更不用說了,可以加快部署速度,並可以有效減少人為操作的失誤。之前一直沒有把這個做起來,最近的新專案正好有機會,費了一番功夫總算搞好了,特此記錄。 1. 開發環

TeamCity持續整合持續交付Docker

TeamCity伺服器 - 強大的持續整合和持續交付功能該映象適用於生產用途和評估目的。鏡像標籤docker映像中的所有預設標記都指向Linux映像。 Windows Docker映象有後綴-windowsservercore 和-nanoserverjetbrains/te

利用Travis CI+GitHub實現持續整合自動部署

前言 如果你手動部署過專案,一定會深感持續整合的必要性,因為手動部署實在又繁瑣又耗時,雖然部署流程基本固定,依然容易出錯。 如果你很熟悉持續整合,一定會同意這樣的觀點:“使用它已經成為一種標配”。 什麼是持續整合 Continuous Integration(CI) is a development p

CI/CD 持續整合持續交付 (一)

在網際網路時代,對於每一個企業,公司,產品快速迭代的重要性不言而喻,針對敏捷開發以使用CICD來完成。但是持續整合和持續交付(CI/CD)其實並沒有那麼容易實現,開發和運維總是忙裡忙外,最後還吃力不

CI/CD 持續整合持續交付 (二)

根據上次的文章介紹,制定了一套解決方案 此套方案 作為 PaaS 或者SaaS 都是棒棒的,結合著openstack 作為IaaS層 更適合, 整體的思路大概是這樣的,後續會詳細介紹。 客戶或產品有新的需求變更,或者測試人員提出bug時,會在redmine服務上建立提交事

Jenkins-Docker-SpringBoot-java-git-gradle-持續整合與自動部署-實現跨伺服器部署

1.首先你需要在git倉庫中有一份可作為服務啟動的springboot程式碼。 可選擇方案(github-國外,Gitee國內,自己搭建私有倉庫): 1.1 如果你只是為了測試或者你的專案是開源的,可以選擇github(國外),因為github私有專案需要收費,你懂的。gi

.NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實現持續整合、自動化部署)

通過前面三篇: [.NET Core部署到linux(CentOS)最全解決方案,常規篇](http://blog.rdiframework.net/article/244) [.NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx)](http://bl

docker+jenkins+maven+gitlab搭建整合java持續整合環境(待完成)

環境:虛擬機器下centos7   首先配置jdk: mkdir /usr/local/java 下載jdk1.8:官網:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133

IDEA+maven+java+TestNG+git+jenkins 第八篇自動化的持續整合

1、安裝JDK,設定環境變數,這裡就不講了網上都有教程; 2、新建一個maven專案,編寫程式,這裡也不講了前面七篇講過了; 3、安裝jenkins,也很簡單,可以直接安裝在windwos系統上也可安裝到tomcat中還可以安裝到應用伺服器中; 4、在jenkins中安裝相應的外掛,主要

Asp.net Core 使用Jenkins + Dockor 實現持續整合、自動化部署(二):部署

前面又是廢話 我之前寫過: Asp.Net Core 程式部署到Linux(centos)生產環境(一):普通部署 Asp.Net Core 程式部署到Linux(centos)生產環境(二):docker部署 大家可能會有疑問,分散式環境當中的部署還是跟我們在windows一樣,一臺機一臺機的去

Asp.net Core 使用Jenkins + Dockor 實現持續整合、自動化部署(一):Jenkins安裝

寫在前面 其實園子裡很多大佬都寫過,我也是一個搬運工很多東西不是原創的,不過還是想把自己安裝的過程,記錄下來如果能幫到大家的忙,也是一件功德無量的事; 執行環境 centos:7.2 cpu:1核 2G記憶體 1M頻寬 其實用的騰訊雲 安裝jenkins 這裡的jenkins就不從docker

基於jenkins構建應用的docker映象做持續整合部署

為了做持續的整合和部署,引入了jenkins,利用jenkins來構建應用的docker映象並push到私有倉庫,然後再基於應用的docker映象來發布專案,這樣減少了很多的手動操作,基本能實現持續整合

從0到1體驗Jenkins+Docker+Git+Registry實現CI自動化釋出

一、前言 Jenkins是一款開源 CI&CD 軟體,用於自動化各種任務,包括構建、測試和部署軟體。Jenkins 支援各種執行方式,可通過系統包、Docker 或者通過一個獨立的 Java 程式。Jenkins是一個廣泛用於持續構建的視覺化Web工具,持續構建就是將專案自動化編譯、打包、部署。

Jenkins+Sonar搭建持續整合程式碼質量檢查環境

Jenkins+Sonar搭建 一、相關環境及下載地址 二、軟體安裝 Jenkins安裝 命令:dpkg –i jenkins_2.121.3_all.deb 若有報錯,執行# apt-get update 和# apt-get –f install, # ln -s /opt/jdk1.8.0_131/b

Docker安裝Jenkins實現自動化構建部署到Tomcat

安裝Docker 安裝VirtualBox 安裝Jenkins 安裝好docker-toolbox之後啟動Terminal 開啟virtualbox,然後等待下載好boot2docker.iso,下載好之後就可以看到virtualbox就

Azure Terraform(八)利用Azure DevOps 實現Infra資源.NET CORE Web 應用程式的持續整合持續部署

一,引言   上一篇講解到利用 Azure DevOps 將整個 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我們也知道整個 Infra 架構已經實現了自動化部署,而

CI與CD--從持續整合持續交付

產品研發生命週期演化史: 1 純人肉構建 這是發生在我身上的7年前的故事,我們的專案每週四會發佈一個新版本,大家在每週四的晚上買好乾糧飲料熬夜苦戰。研發人員先提交程式碼,你merge我我merge,忙得不可開交;測試人員們則無事可做耐心等待。夜晚10點鐘,研發人員終於憋出來一個build的過

SpringBoot | 第十章:Swagger2的整合使用

前言 前一章節介紹了mybatisPlus的整合和簡單使用,本章節開始接著上一章節的使用者表,進行Swagger2的整合。現在都奉行前後端分離開發和微服務大行其道,分微服務及前後端分離後,前後端開發的溝通成本就增加了。所以一款強大的RESTful API文件就至關重要了。而

CI持續整合系統環境---部署gerrit環境完整記錄

開發同事提議在線上部署一套gerrit程式碼稽核環境,廢話不多說,部署gerrit的操作記錄如下: 提前安裝好java環境,mysql環境,nginx環境 測試系統:centos6.5 下載下面三個包,放到/root目錄下(下載地址:http://pan.baidu.com/