Github私有仓库-管理不同环境的软件包

最近,我们将Db模型(Sequelize)移到了一个单独的存储库中,并使用Gi​​thub软件包进行发布。

当我们将其移至一个独立的存储库时,我们发现我们需要根据环境(生产/暂存/开发)安装不同的版本
例如:

  • 生产版本需要v1.2,
  • 登台需要v1.3等。

由于我们希望避免手动进入每个相关服务并更新所需的版本,因此我们希望使用dist标签进行管理。

因为我们要根据环境将package.json拉包版本分别标记为“ staging”和“ production”,并且我们要发布新版本,例如将1.3标记为“ production”。

很遗憾,GitHub注册表似乎不支持dist-tags,因此我们正在寻找其他方法。

有什么建议吗?

wish4star 回答:Github私有仓库-管理不同环境的软件包

如果可能的话(意味着如果没有敏感信息,尤其是对于生产参数而言),则应对三个单独的文件进行版本控制:

  • package.json.dev
  • package.json.stg
  • package.json.prd

然后,该想法将是 not 版本package.json(将其保留为私有),而生成(其中具有正确的值),是从其中一个文件,具体取决于当前的执行环境。

例如,您可以在每个环境中有单独的分支,并在其中包含正确的文件。
生成脚本将使用以下命令确定签出分支的名称:

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

这意味着您可以:

  • 仅版本模板文件package.json.tpl
  • 以分支命名的版本值文件:package.json.devpackage.json.stg:由于它们是不同的,因此合并或切换分支时没有合并问题。

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

smudge (来自“ Customizing Git - Git Attributes”的图像,来自“ Pro Git book”的图像)

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

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

本文链接:https://www.f2er.com/3042390.html

大家都在问