米枫网站怎么做分页,discuz轻社区模板,wordpress 不同站点,战事新闻最新好的工具和流程能使我们事半功倍#xff0c;而这个过程是不断迭代和演进的。关于这一块的内容#xff0c;之前写过几篇文章#xff1a;在团队中使用GitLab中的Merge Request工作模式敏捷下的需求和代码分支管理不断进化的分支和需求管理现在又有了些新的变化和改进#xff… 好的工具和流程能使我们事半功倍而这个过程是不断迭代和演进的。关于这一块的内容之前写过几篇文章在团队中使用GitLab中的Merge Request工作模式敏捷下的需求和代码分支管理不断进化的分支和需求管理现在又有了些新的变化和改进之所以需要改进肯定是遇到问题了那么就先从问题来开始今天的文章。问题问题分为两种方法论的问题比如团队采用主干开发主干发布的模式但是质量得不到保证这时通过分析讨论决定采用采用主干开发分支发布的模式来解决这属于从方法论层面解决问题。落地执行的问题已经知道应该采用主干开发分支发布的模式但在实际操作的时候难以执行下去这属于执行的问题。在《不断进化的分支和需求管理》一文的最后提到会引入 release 分支和 tag实际也这么做了但效果并不理想原因是执行的不严格没有做到位具体原因如下发布时是对分支进行构建发布发布后再在 GitLab 中打上 tag一忙起来很容易忘记镜像的版本也是如此。解决思路目的其实很简单就是让代码的 tag 和镜像的 tag 能够一致靠人工去做这些事情比想象的要更加困难所以稍微转换了下思路就能实现自动化也就可以解决这个问题。之前提到的 release 分支只做最终的集成测试需要发布时就从 release 分支创建 tag对 tag 来做发布通过脚本自动创建镜像 tag 进行 push 。流程图如下实际操作原来在 jenkins 中对分支进行发布需要设置特定的分支现在需要对 tag 进行发布tag 是不断进行创建的就需要用到 jenkisn 的参数化功能。jenkins 的参数化需要用到 Git Parameter 插件可以在 jenkins 的插件管理界面中直接安装如果安装失败可以在这个地址进行下载http://mirror.xmission.com/jenkins/plugins/git-parameter/latest/更多插件的使用说明参考官网https://plugins.jenkins.io/git-parameter/具体配置步骤如下1、在 General 下面勾选 This project is parameterized 。Name参数名称可以随便填写在后面配置分支名称时会用到Parameter Type这里我选择 Tag你也可以根据需要选择 Branch 或者其他类型。2、在 Source Code Management 选择 git 进行设置 。Branch Specifier${tag}, tag 为第一步中输入的参数名称。设置完成后可以看到在构建界面中由原来的 Build Now 变成了 Build with Parameters 。3、点击 Build with Parameters 选择需要构建的 tag 就可以了 。按照 tag 进行构建搞定后剩下就是需要在构建脚本中获取到最新的 tag 名称并作为参数设置到容器的环境变量和镜像的 tag 中首先进入到 jenkins 配置的程序目录使用 git describe --abbrev0 --tags 获取 tab 名称前端容器使用环境变量的方式将 tag 名称传入并最终在界面显示容器镜像使用参数的方式拼接上 tag 名称。完整脚本如下#!/bin/bashdocker rm -f vue_demo
echo old container vue_demo del successecho begin docker build
if [ ! -d web ]; thenmkdir -p webecho web dir created
fi# 获取最新tag 名称
cd /root/code/vue_demo
tagNamegit describe --abbrev0 --tags
echo tag name is $tagNamecd /root/build/vue_demo
cp /root/build/vue_demo/Dockerfile ./web
cp /root/build/vue_demo/init.sh ./web
cp -r /root/code/vue_demo/dist/* ./webecho begin docker build
cd web
docker build -t vue_demo .
echo build enddocker run -d -p 9500:80 --name vue_demo -e tag_name${tagName} --restartalways vue_democd ..
rm -rf webecho update docker iamges start
docker tag vue_demo:latest 10.10.10.10:8888/vue_demo:${tagName}
docker push 10.10.10.10:8888/vue_demo:${tagName}
echo update docker iamges end
最后任何时候如果发现事情做起来别扭或者流程难以执行就需要我们停下来进行思考或者和他人讨论往往一个细小的调整或许就能带来巨大的收益。