如何:在推送/合并以将特定文件提交/推送到另一个项目时

问题描述 投票:0回答:1

[当用户合并到母版时,将那些文件合并到该用户无权访问的另一个项目母版中。我为非技术用户提供了编辑一些配置文件的权限,然后将它们通过Saltstack推送到生产系统。它使用同一gitlab服务器上的其他项目进行配置。

我认为我需要在初始项目上安装git钩子,并且git钩子将运行脚本来完成其余的工作,但是我不确定是否可以使用git-cherrypick命令或部署密钥来完成。

用户正在登录gitlab并在gitlab UI中编辑文件,该界面会自动执行提交/合并请求,然后管理员将完成合并请求/合并。

然后,我希望可以获取这些文件,将它们复制到我的saltstack状态/ files /目录中,在该目录中将运行highstate并将配置推送到生产服务器。我只是想缺少这样做的自动化机制,我在git上还是个新手,想知道在我编写一个糟糕的bash脚本来实现它之前是否有git机制。

git gitlab githooks
1个回答
0
投票

而不是复制它们,为什么不将gitlab项目用作saltstack的文件后端?一旦有人批准了合并请求,则1分钟后,您便可以使用新更改运行高级状态。基本上,这意味着Salt-master与gitlab项目建立了连接,并在其中存储了配置文件(和saltstates)。它与使用/ srv / salt相同,但仅在gitlab上使用。这样,您还可以使用git / gitlab在版本控制方面提供的好处。如果要进行设置,请查看this documentation

关于在仓库之间镜像特定文件,我想您可以尝试使用gitfs并围绕它构建某种形式的管道。 (也许使用CI / CD)您还可以每分钟通过rsync克隆存储库和snyc。为此,一个简单的cron脚本可能会有所帮助。该脚本应在每次执行时提取repo1,将所有内容同步到repo2并将其推送到远程。

希望我能帮忙。

© www.soinside.com 2019 - 2024. All rights reserved.