根据当前阶段更改变量

Posted

技术标签:

【中文标题】根据当前阶段更改变量【英文标题】:Change variable based on current stage 【发布时间】:2020-01-28 18:39:12 【问题描述】:

我的无服务器应用程序有两个阶段:开发(在分支开发上)和主控(在分支主控上)。 它有一个名为 config.js 的文件,如下所示:

API_URL: api.prod.some-server.com

但是当我在develop 分支/开发阶段环境中时,我希望“prod”更改为“dev”。 如果我在更改当前分支/dev_stage 时来回更改 API_URL (prod -> dev),那会有点累。

有没有办法自动化这个? 谢谢

【问题讨论】:

【参考方案1】:

有没有可能自动化这个?

是的:您需要版本config.js(保密),而是生成它(其中包含正确的值)。

生成脚本将确定签出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

或者(自Git 2.22, Q2 2019)

branch=$(git branch --show-current)

这意味着你可以:

版本只有一个模板文件config.js.tpl 以分支命名的版本值文件:config.js.devconfig.js.master:由于它们不同,因此在合并或切换分支时不会出现合并问题。

最后,您将(在.gitattributes declaration 中)注册一个content filter driver

(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

与模板文件 (config.js.tpl) 关联的 smudge 脚本将通过查看右侧 config.js.<branch> 值文件中的值来生成(在 git checkout 上自动)实际的 config.js 文件。 生成的实际config.js 文件仍然被忽略(由.gitignore)。

在“git smudge/clean filter between branches”查看完整示例。

【讨论】:

以上是关于根据当前阶段更改变量的主要内容,如果未能解决你的问题,请参考以下文章

仅在 git 中暂存分阶段的更改 - 有可能吗?

我删除了分支与未分阶段的更改 - 我可以还原吗?

2023-05-02 动态规划简介

如何在声明性 Jenkins 管道的各个阶段之间传递变量?

java虚拟机类加载阶段-初始化(initialization)

一阶段答辩