jenkins實踐篇(2)—— 自動打tag的可回滾釋出模式
來源:藍胖子的程式設計夢
!! 大家好,我是藍胖子,在上一篇我簡單介紹瞭如何基於特定分支做自動編譯和釋出,在生產環境中,為了更加安全和快速回滾,我採取的是透過對程式碼打tag的方式來進行部署,下面我將詳細介紹整個釋出過程的邏輯。
釋出與回滾思路
正常功能釋出時,是基於master分支釋出的,所以我在成功釋出後,會將當時的master分支自動打上tag,當需要回滾時,則基於tag分支進行釋出即可。如下圖所示,當op選擇rollback時則需要去選擇tag的版本。
具體操作步驟
下面介紹下詳細的步驟
Jenkins安裝git Parameter 外掛
要想出現tag模式的引數,需要安裝git Parameter 外掛,在Jenkins的Manage Jenkins→Plugins→Available Plugins 中安裝 ,安裝完成後在專案的配置頁的This project is parameterized 中可以看到選項,
配置了這個還沒完,因為jenkins還需要知道是從哪個git倉庫獲取tag,所以在下面的原始碼管理部分(SCM) 需要配置git地址。
安裝Version Number 外掛
接著因為要自動給倉庫打上tag,所以這裡涉及到tag的取名規則,我用了一個Version Number 的外掛,它能夠獲取到當天的年,月,日資料,我可以利用它來為tag進行取名,來看下寫pipeline指令碼時如何用上,
pipeline {
agent any
environment {
PROJECT_NAME = 'project1'
GIT_URL = '
VERSION = VersionNumber versionPrefix:'prod.', versionNumberString: '${BUILD_DATE_FORMATTED, "yyyyMMdd"}.${BUILDS_TODAY}'
}
parameters {
choice(name:'OP',choices:'publish\nrollback',description: 'publish(釋出新版本時選擇,部署後自動生成新tag) rollback(回滾時選擇,需要同時選擇回滾的tag)')
choice(name:'DEPLOYENV',choices:'prod',description: '部署環境')
gitParameter (branch:'', branchFilter: 'origin/(.*)', defaultValue: 'master', description: '選擇將要構建的標籤', name: 'TAG', quickFilterEnabled: false, selectedValue: 'TOP', sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_TAG', useRepository: env.GIT_URL)
choice(name:'APP',choices:'app1\app2',description: '應用名')
}
stages{
stage('build'){
steps {
script {
if (params.OP == 'publish') {
sh """
source ~/.bash_profile
box_build.sh $APP master $PROJECT_NAME
"""
} else {
if (params.TAG == ''){
error("回滾操作必須指定tag版本")
}
sh """
source ~/.bash_profile
box_build.sh $APP master $PROJECT_NAME $TAG
"""
}
}
}
}
stage('deploy'){
steps {
sh """
source ~/.bash_profile
boxcli --env=$DEPLOYENV publish --app=$APP
"""
}
}
stage('tag') {
steps {
script {
if (params.OP == 'publish') {
sh """
source ~/.bash_profile
cd ~/pkgs/src/$PROJECT_NAME
git tag $VERSION
git push --tags
"""
}
}
}
}
}
}
如上述程式碼所示,VERSION 變數就是最後的tag 名,最後類似於prod.20231020.1 這樣的結構,最後的.1 代表的是當天build的次數。其中編譯和部署的stage裡面是呼叫了我們公司自己的編譯和釋出指令碼,這個每個公司的都不太一樣,可自行修改。最後釋出成功後,在最後一個階段也就是tag 階段,我們會自動對專案打上tag。
在上述pipeline指令碼中,我在parameters 指令中定義了gitParameter 以及其他引數,所以不用再到jenkins的介面去定義相關引數了。需要用到的外掛在pipeline指令碼中如何使用,在外掛的官方網址上一般都會說明,照著例子寫下來修改其中配置即可。
!! 關於jenkins pipeline的語法可以參考我之前的一片文章 [jenkins 原理篇——pipeline流水線 宣告式語法詳解] https://mp.weixin.qq.com/s/QD2DwVypIN5-xWxYrAzITw
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2992697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jenkins實踐篇(1)——基於分支的自動釋出Jenkins
- SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可回滾)SpringGCCloud
- jenkins+git+.net core實現自動釋出JenkinsGit
- jenkins自動釋出java程式碼JenkinsJava
- asp.net core + jenkins 實現自動化釋出ASP.NETJenkins
- Git + Jenkins 自動化 NGINX 釋出簡易實現GitJenkinsNginx
- 一鍵實現自動化部署(灰度釋出)實踐
- Jenkins 構建自動化 .NET Core 釋出映象Jenkins
- 使用Jenkins實現前端自動化釋出和通知,讓你的釋出只需要git pushJenkins前端Git
- JB的測試之旅-利用jenkins達到提tag自動打包Jenkins
- 實踐資料回滾解決方案
- webdriver+ant+jenkins自動化測試實踐WebJenkins
- vue 自動化部署 jenkins 篇VueJenkins
- Jenkins持續整合(下)-Jenkins部署Asp.Net網站自動釋出JenkinsASP.NET網站
- Knativa 基於流量的灰度釋出和自動彈性實踐
- 《JavaScript設計模式與開發實踐》模式篇(2)—— 策略模式JavaScript設計模式
- Jenkins+Git+python+Pgyer Android打包釋出實踐JenkinsGitPythonAndroid
- ORACLE回滾段(2)Oracle
- netcore使用 jenkins + supervisor 實現standalone下多副本自動化釋出NetCoreJenkins
- Jenkins+Fastlane+自動化打包釋出+蒲公英二維碼展示JenkinsAST
- 無限滾動的最佳實踐經驗
- 回滾操作、回滾段的理解
- kubernetes實踐之四十:Pod的升級與回滾
- Vue實現浮動按鈕元件 - 頁面滾動時自動隱藏 - 可拖拽Vue元件
- 設計模式之釋出訂閱模式(2) Redis 釋出/訂閱模式設計模式Redis
- 基於DotNetty實現自動釋出 - 實現一鍵打包釋出Netty
- 實現隨著滾動條滾動,導航會自動切換的效果
- 「持續整合實踐系列 」Jenkins 2.x 構建CI自動化流水線常見技巧Jenkins
- 前端自動化釋出實戰總結前端
- Jenkins2.65釋出,可擴充套件的持續整合引擎Jenkins套件
- jenkins配置記錄(2)--程式碼釋出流程Jenkins
- 三級 NestedScroll 巢狀滾動實踐巢狀
- 自動出題判分——c#學習實踐C#
- Docker 搭建 Jenkins 實現自動部署DockerJenkins
- Jenkins整合appium自動化測試(Windows篇)JenkinsAPPWindows
- 微信公眾號自動批量打標籤的 2 個實現方法
- 小夥伴想學Jenkins自動構建釋出專案,我:安排上了!!Jenkins
- [javascript]如何優雅的實現網頁自動滾動JavaScript網頁