抖音seo工具,上海seo网站推广,郑州做网站设计,网站诊断表大家好#xff0c;我是蓝胖子#xff0c;在上一篇我简单介绍了如何基于特定分支做自动编译和发布#xff0c;在生产环境中#xff0c;为了更加安全和快速回滚#xff0c;我采取的是通过对代码打tag的方式来进行部署#xff0c;下面我将详细介绍整个发布过程的逻辑。 发布… 大家好我是蓝胖子在上一篇我简单介绍了如何基于特定分支做自动编译和发布在生产环境中为了更加安全和快速回滚我采取的是通过对代码打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 https://git.xxxx.git 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_profilebox_build.sh $APP master $PROJECT_NAME } else { if (params.TAG ){ error(回滚操作必须指定tag版本) } sh source ~/.bash_profilebox_build.sh $APP master $PROJECT_NAME $TAG } } } } stage(deploy){ steps { sh source ~/.bash_profileboxcli --env$DEPLOYENV publish --app$APP } } stage(tag) { steps { script { if (params.OP publish) { sh source ~/.bash_profilecd ~/pkgs/src/$PROJECT_NAMEgit tag $VERSIONgit 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