前言
本篇文章引導你使用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相關的插件
等待插件安裝完成
配置使用者名和密碼

全局配置
系統管理-》全局工具配置 配置Git,JDK和Maven
安全配置
系統管理-》全局安全配置
勾選Allow anonymous read access
取消防止跨站點請求僞造
建立任務
建立任務-》流水線
建構腳本
勾選觸發遠端建構 (WebHooks觸發位址),填寫簡單的Pipeline script
#!groovy
pipeline{
agent any
stages {
stage('test'){
steps {
echo "hello world"
}
}
}
}
測試腳本
立即建構
控制台輸出
gitee內建WebHooks
添加SSH公匙
配置WebHooks
使用natapp實作内網穿透
修改腳本
修改Pipeline script
#!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 啟動服務
通路
http://sso-taobao:8083/client1登入
修改内容效果如下:
更多效果圖
代碼下載下傳
github:
https://github.com/longfeizheng/sso-merryyougitee:
https://gitee.com/merryyou/sso-merryyou文章來源:
https://my.oschina.net/merryyou/blog/1799317