Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 有没有办法避免受到我同事的主合并的影响';模块_Git_Puppet - Fatal编程技术网

Git 有没有办法避免受到我同事的主合并的影响';模块

Git 有没有办法避免受到我同事的主合并的影响';模块,git,puppet,Git,Puppet,我们使用git+puppet开发我们的puppet代码,并将它们部署到我们的服务器节点 技术图(包括一些中文但不太重要)是: 常见的配置,如包源列表、dns服务器和系统相关文件,正在编码到以pkgmgr、networkmgr和sysenv命名的puppet模块中。它们在不同的分支中开发、测试和发布,然后推送到puppet主节点上的/modules/env(branch)/Common目录。另一方面,我们有许多项目有自己的配置,包括或声明公共模块,编码到以项目名称命名的模块中,然后以相同的方式复

我们使用git+puppet开发我们的puppet代码,并将它们部署到我们的服务器节点

技术图(包括一些中文但不太重要)是:

常见的配置,如包源列表、dns服务器和系统相关文件,正在编码到以pkgmgr、networkmgr和sysenv命名的puppet模块中。它们在不同的分支中开发、测试和发布,然后推送到puppet主节点上的/modules/env(branch)/Common目录。另一方面,我们有许多项目有自己的配置,包括或声明公共模块,编码到以项目名称命名的模块中,然后以相同的方式复制到modules/env(branch)/projects

每个项目中充当傀儡代理的服务器可以设置一个特定的傀儡环境,如生产、测试。例如,当选择生产环境时,将部署/modules/production/common和/modules/projects/project\a中定义的模块中的资源

公共模块由另一个单元维护,任何合并到主分支的更新都将影响生产环境中的项目服务器。是否有办法满足:

1我们的一些项目服务器在脱机之前不需要任何更新

2对通用模块的任何更改都将生成一个带标签的快照式版本,并且可以由我们的项目选择


我知道很难像其他离线软件一样在版本中发布puppet模块,但还有其他方法可以优雅地满足这两个要求吗?

对于很多团队来说,软件的发布管理可能很棘手


我的建议是,如果每个模块可以使用一个存储库,那么不要使用相同的存储库(尽管这会带来相当大的开销)。相反,您可以使用多个git存储库,并在使用(比如Library puppet)时向您的公司提供“通用”模块。

好的……您的意思是单独和离线提供通用模块吗?就像从puppet forge下载模块一样?然后问题是如何将它们排列在puppet模块目录下,并允许我们选择特定的版本,这就是puppet图书管理员将为您做的事情。您可以将其指向puppet forge或git repo,如果您使用git repo,则可以选择分支、标记或SHA作为您的版本。Library puppet会自动将这些模块放在您的模块目录中(尽管我更喜欢将它们放在供应商/模块中,以便我知道哪些是我的,哪些是上游的),这是有意义的。我将实际尝试一下,并告诉你是否还有其他问题。非常感谢。