经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Git » 查看文章
docker 发布应用时添加 git revision
来源:cnblogs  作者:wang_yb  时间:2019/5/28 9:00:59  对本文有异议

概要

docker 发布应用时, 将 git revision 注入到应用中, 在问题出现时, 可以迅速定位代码版本.

实施步骤

  1. 获取 git revision
  2. 将 git revision 传入具体的应用中
    • 前端的 revision 通过 yarn build 传入
    • 后端的 revision 通过 环境变量传入

获取 git revision

  1. GIT_TAG=`git describe --tags`
  2. IFS='-' read -r -a tags <<< $GIT_TAG
  3. if [ "${#tags[@]}" = "1" ]; then
  4. GIT_COMMIT=$tags
  5. else
  6. GIT_COMMIT=`git rev-parse HEAD | cut -c 1-8`
  7. fi

上面的代码是获取最新的 git revision 的前 8 位, 如果最新的 git revision 有 tag, 则使用 tag 获取的 git revision 放在 GIT_COMMIT 中.

前端 git revision 注入

首先是 docker build 命令中传入 git revision

  1. docker build -t xxx.latest --build-arg VERSION=${GIT_COMMIT} .

然后在 docker file 中获取 VERSION, 并将其传给 yarn build 命令

  1. ARG VERSION=no-version # 默认值 no-version
  2. RUN yarn
  3. RUN yarn build --VERSION=${VERSION}

最后是前端工程中获取此变量, 并在页面的 footer 处显示 git revision

  1. process.argv
  2. .filter(str => /^--/.test(str))
  3. .map(str => str.replace('--', ''))
  4. .forEach(str => {
  5. let sub = str.match(/([\s\S]*)\=([\s\S]*)/)
  6. sub ? (TYPE[sub[1]] = sub[2]) : (TYPE[str] = true)
  7. })
  8. const mergeWebpackConfig = () => (config, env) => {
  9. // ...省略...
  10. config.plugins = (config.plugins || []).concat([
  11. new webpack.DefinePlugin({
  12. 'process.env.VERSION': JSON.stringify(TYPE['VERSION'])
  13. })
  14. ])
  15. // ...省略...
  16. }
  1. <Footer>
  2. <div
  3. style={{ textAlign: 'center' }}
  4. className="gx-layout-footer-content"
  5. >
  6. Copyright ? 2019 {process.env.VERSION}
  7. </div>
  8. </Footer>

后端 git revision 注入

本文的例子是基于 golang 的 API 后端, 获取 git revision 的方法和上面类似.

获取 git revision 之后, 在 docker file 中获取 VERSION, 并设置环境变量 VERSION

  1. ARG VERSION=no-version
  2. ENV VERSION=${VERSION}

API 服务添加 -v 参数, 用来显示服务的版本

  1. ver := flag.Bool("v", false, "verify version")
  2. flag.Parse()
  3. if *ver {
  4. fmt.Println(os.Getenv("VERSION"))
  5. return
  6. }

原文链接:http://www.cnblogs.com/wang_yb/p/10934407.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号