docker 发布应用时添加 git revision
- 概要
- 实施步骤
- 获取 git revision
- 前端 git revision 注入
- 后端 git revision 注入
概要
docker 发布应用时, 将 git revision 注入到应用中, 在问题出现时, 可以迅速定位代码版本.
实施步骤
- 获取 git revision
- 将 git revision 传入具体的应用中
- 前端的 revision 通过 yarn build 传入
- 后端的 revision 通过 环境变量传入
获取 git revision
GIT_TAG=`git describe --tags`
IFS='-' read -r -a tags <<< $GIT_TAG
if [ "${#tags[@]}" = "1" ]; thenGIT_COMMIT=$tags
elseGIT_COMMIT=`git rev-parse HEAD | cut -c 1-8`
fi
上面的代码是获取最新的 git revision 的前 8 位, 如果最新的 git revision 有 tag, 则使用 tag 获取的 git revision 放在 GIT_COMMIT 中.
前端 git revision 注入
首先是 docker build 命令中传入 git revision
docker build -t xxx.latest --build-arg VERSION=${GIT_COMMIT} .
然后在 docker file 中获取 VERSION, 并将其传给 yarn build 命令
ARG VERSION=no-version # 默认值 no-version
RUN yarn
RUN yarn build --VERSION=${VERSION}
最后是前端工程中获取此变量, 并在页面的 footer 处显示 git revision
process.argv.filter(str => /^--/.test(str)).map(str => str.replace('--', '')).forEach(str => {let sub = str.match(/([\s\S]*)\=([\s\S]*)/)sub ? (TYPE[sub[1]] = sub[2]) : (TYPE[str] = true)})const mergeWebpackConfig = () => (config, env) => {// ...省略...config.plugins = (config.plugins || []).concat([new webpack.DefinePlugin({'process.env.VERSION': JSON.stringify(TYPE['VERSION'])})])// ...省略...
}
<Footer><divstyle={{ textAlign: 'center' }}className="gx-layout-footer-content">Copyright © 2019 {process.env.VERSION}</div>
</Footer>
后端 git revision 注入
本文的例子是基于 golang 的 API 后端, 获取 git revision 的方法和上面类似.
获取 git revision 之后, 在 docker file 中获取 VERSION, 并设置环境变量 VERSION
ARG VERSION=no-version
ENV VERSION=${VERSION}
API 服务添加 -v 参数, 用来显示服务的版本
ver := flag.Bool("v", false, "verify version")
flag.Parse()if *ver {fmt.Println(os.Getenv("VERSION"))return
}
转载于:https://www.cnblogs.com/wang_yb/p/10934407.html
docker 发布应用时添加 git revision相关推荐
- CSDN 发布文章时 添加的图片 怎么 去掉水印
编辑发布csdn文章 时,添加图片有水印看着有点变扭,怎么去掉呢? 网上有写去掉链接上面的字样的,但是我找了很久都没有看到添加图片后有链接出来······ 然后就想是不是设置上有相关的设置呢?还真有! ...
- 尝试远程添加Git存储库时收到“致命错误:不是git存储库”
我通过遵循本教程向自己介绍Git: 让jekyll在Nearlyfreespeech.net上运行 一切正常,直到将回购添加到本地计算机的部分为止: git remote add nfsn ssh:/ ...
- Git 提交代码时添加 emoji 图标
文章目录 Git 提交代码时添加 emoji 图标 在commit时添加一个emoji表情图标 添加多个emoji表情图标 Git 提交代码时添加 emoji 图标 使用git的开发者都知道提交代码的 ...
- idea中,发布项目到Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected“
idea中,发布项目到Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected". 大概原因是:初始化项目时,远程仓库 ...
- 如何使用Docker发布SpringBoot项目
1.目标 Dockerfile文件用来构建Docker镜像,它由一系列命令和参数构成,接下来演示一下如何使用Docker发布SpringBoot项目. 2.准备 a.SpringBoot项目 该项目名 ...
- VS2019添加git源代码管理-增加VS版本 16.10.4的GIT管理
文章目录 前言 VS2019添加git源代码管理-旧版本 VS2019添加git源代码管理-新版本 前言 本文当时创作时,VS的git源代码管理还没有做出改变,所以会导致很多读者有疑问,找不到团队资源 ...
- 【历史上的今天】3 月 20 日:cURL 二十五周年;Docker 发布;思科收购 Linksys
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2023 年 3 月 20 日,在 1999 年的今天,人类首次成功乘热气球环球飞行.在 24 年的今天,瑞士人皮 ...
- VS2008 VS2010发布网站时如何产生固定命名的 Dll 文件
VS2008 发布网站时如何产生固定命名的 Dll 文件 dev.firnow.com 时间 : 2010-12-08 作者:网络 编辑:fnw 点击: 82 [ 评论 ] - - VS ...
- 用Java Instrumentation 在类加载时添加记录
用Java Instrumentation 在类加载时添加记录 发布者:xanadu0214 来源:网络转载 发布日期:2013年11月06日 Java学习交流群:471651004 在分 ...
最新文章
- 负载均衡的几种常用方案
- Python爬虫:爬取instagram,破解js加密参数
- java 后台自动刷新请求_spring oauth2+JWT后端自动刷新access_token
- HTML页面加载顺序
- 一步步实现SDDC-Edge负载均衡
- ssis 执行任务的日志_SSIS和PowerShell –执行流程任务
- win10下装win7双系统_电脑安装双系统win7+win10,安装顺序不同,使用会有什么不同?...
- python编程入门第3版pdf-Python编程入门(第3版) PDF扫描版[26MB]
- (微信编辑器)UEditor富文本嵌入135编辑器
- Deecamp夏令营面试及结营体验
- 怎么在线把QLV格式转成MP4
- 不用 qlv 格式转换成 mp4 - 优雅的下载腾讯视(mp4 格式)
- java protected 构造方法_java中子类调用父类构造方法注意事项
- postman批量刷接口
- MOSFET的基本知识
- 【STM32利用CuBe MX生成HID设备】1-熟悉软件以及生成一个8键的游戏控制器
- java 识别doc、docx
- Altium desiger 使用 功能整理【不定时更新】
- 梳理PSS和SSS的位置
- IDC:英国脱欧对本国IT支出带来3大潜在影响
热门文章
- “互联网+”下的制造业供应链新挑战
- Redis的安装与简单部署
- 开始研究JavaScript
- CruiseControl中应用NCover和NCoverExplore
- 关于 mysql 在联合查询时,使用 concat 拼接查询条件
- HttpWebResponse 的问题
- Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)B. Primal Sport
- 网站用sqlite库,报attempt to write a readonly database,解决方法
- 实现才是目的——《大道至简》第六章读后感
- 函数传参和实际应用—JS学习笔记2015-6-5(第49天)