日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker 发布应用时添加 git revision

發布時間:2023/12/31 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。