【问题标题】:git clone and checkout specific tagsgit clone 和 checkout 特定标签
【发布时间】:2019-07-29 05:26:05
【问题描述】:

我正在开发一个 gitlab 项目,它有自己的 git 存储库和 Ansible 角色。

问题是我们还有一些由另一个团队维护的共享角色。这些角色在一个单独的项目中,每个角色就像一个拥有自己存储库的子项目。现在在我们的管道中,我们从运行器中对这些角色进行 git 克隆,执行代码并再次删除克隆。

虽然这种机制运作良好,但这种方法会导致问题。假设我们部署到开发、测试和验收,然后共享角色由其他团队更新。当我们部署到生产环境时,我们会因为克隆的共享角色发生变化而出现不一致。

所以我想到了引入 git 标签。共享角色上的每个提交都带有版本号标记。然后我们可以做一个 git clone,并检查版本号。

但是,我正在努力弄清楚如何在管道中实现这一点。有没有办法做到这一点,而不必在管道中硬编码版本号?

【问题讨论】:

  • 提交 ID 的标签——没关系。重要的是您必须创建一个映射,将存储库中的提交映射到共享角色存储库中的标签(或提交)。有很多可能的方法来存储这样的地图;您可以将其存储在文本文件或管道脚本中。您还可以将共享角色存储库作为子模块添加到存储库; git 用子模块本身维护所述提交映射。
  • 这里的一位同事说了类似的话,并将此信息存储在 Artifcatory 中。谢谢你的回答。

标签: git tags ansible gitlab pipeline


【解决方案1】:

我们有相同剧本共享角色的场景。

我们看了:

  • 标签
  • 子模块(哎呀)
  • 子存储库

最后,我们都没有选择:您的每个剧本都包含一个符号链接,作为一个roles/ 文件夹,指向我们所有角色的父文件夹的符号链接。
这样一来,剧本始终会引用角色的最新版本(当前已签出)。

ansible 继续引用剧本的特定 SHA1,但共识仍然存在:始终使用最新的角色。无需管理任何特定的 Git 引用(当涉及到每个角色的 Git 存储库时)

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 2013-09-02
    • 2013-06-29
    • 1970-01-01
    • 2014-11-15
    • 2018-08-08
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多