【问题标题】:Deploying each subdirectory of my git repository to a different target with CI/CD使用 CI/CD 将我的 git 存储库的每个子目录部署到不同的目标
【发布时间】:2019-05-06 15:03:50
【问题描述】:

我有一个包含多个项目的 git 存储库。每个项目的代码都可以在一个专门的子目录下找到。 每个项目都有自己的部署过程。我希望当我在项目目录下推送提交时,它会部署正确的项目(并且只有它)。我目前正在使用 bitbucket 管道,但是,它似乎没有这个选项。 我怎样才能使这项工作? (我可以切换到另一个 CI/CD 工具)

【问题讨论】:

    标签: git continuous-integration continuous-deployment bitbucket-pipelines


    【解决方案1】:

    它没有这个选项,因为这不是 git 的使用方式。

    对于要单独部署的项目,每个项目都应该有一个存储库。这将允许您以可管理和可记录的方式单独微调部署过程,更重要的是,保持历史记录干净。想象一下,现在在您的情况下,您需要查看特定项目的历史记录——您最终将挖掘其他项目的所有提交,试图找到您正在寻找的提交。

    如果您需要项目互连并在通用版本控制下,有一个解决方案:子模块。查看官方文档here。它将允许您跟踪个人历史并同时共享资源。它还可以让您对共享空间中每个项目的版本进行明确的控制。

    所以我对您的问题的解决方案:重构。将项目分离到单独的存储库中,每个存储库都有自己的部署策略工作得很好。如果您随后需要将它们互连并共享资源,请将它们作为子模块,创建一个新的存储库并将它们作为子模块添加。这应该可以解决您的混乱历史记录和无法控制的文件夹。

    【讨论】:

    • 感谢您的回答,这实际上是一个古老的单存储库与多存储库的争论。假设我有 20 个不同的项目,每个项目都与其他项目合作,通常我有大约 4 个不同的项目要提交。当我提交这个时,其他人可以提交我的一个项目,用多个子模块管理所有这些太复杂了,我希望有一个主,并且一些后台工作将确保所有部署服务。这样PR会更好的管理,不会部分子模块的PR。
    • 为了看到与单个项目相关的提交,真的很简单,我在右边的子目录上过滤,就是这样。
    • 钩子能帮到你吗?
    • 什么意思?拿他们怎么办?
    • 它们可以用来触发事件的动作。看看这里:git-scm.com/book/en/v2/Customizing-Git-Git-Hooks。无论如何,我仍然认为重构会是一个更好的解决方案。复杂的相互依赖关系不是子模块的禁忌。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多