天天看點

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

前言

本篇文章引導你使用Jenkins部署[SpringBoot項目],同時使用Docker和Git實作簡單的持續內建和持續部署。(項目位址:sso-merryyou)

流程圖如下:

push代碼到Github觸發WebHook。(因網絡原因,本篇使用gitee)

Jenkins從倉庫拉去代碼

mavem建構項目

代碼靜态分析

單元測試

build鏡像

push鏡像到鏡像倉庫(本篇使用的鏡像倉庫為網易鏡像倉庫)

更新服務

Jenkins安裝

下載下傳jenkins

https://jenkins.io/download/

下載下傳對應的jenkins

初始化密碼

通路本地:

http://localhost:8080

輸入密碼

選擇插件

進入使用者自定義插件界面,選擇第二個(因為我們本次建構使用的為Pipelines)

勾選與Pipelines相關的插件

等待插件安裝完成

配置使用者名和密碼

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

全局配置

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

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

安全配置

系統管理-》全局安全配置

勾選Allow anonymous read access

取消防止跨站點請求僞造

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

建立任務

建立任務-》流水線

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

建構腳本

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

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

#!groovy
pipeline{
    agent any

    stages {

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

測試腳本

立即建構

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

控制台輸出

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

gitee內建WebHooks

添加SSH公匙

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

配置WebHooks

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署
使用natapp實作内網穿透
SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

修改腳本

修改Pipeline script

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署
#!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提供。

更多Pipeline文法參考:pipeline 文法詳解

測試

docker-compose up -d 啟動服務

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

通路

http://sso-taobao:8083/client1

登入

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

修改内容效果如下:

更多效果圖

SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署
SpringBoot+Docker+Git+Jenkins實作簡易的持續內建和持續部署

代碼下載下傳

github:

https://github.com/longfeizheng/sso-merryyou

gitee:

https://gitee.com/merryyou/sso-merryyou

文章來源:

https://my.oschina.net/merryyou/blog/1799317