git - 使用 CI/CD 将我的 git 存储库的每个子目录部署到不同的目标

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

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

最佳答案

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

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

如果您需要项目相互关联并处于公共(public)版本控制之下,则有一个解决方案:子模块。查看官方文档 here .它将允许您跟踪个人历史并同时共享资源。此外,它还可以让您对共享空间中每个项目的版本进行不同的控制。

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

关于git - 使用 CI/CD 将我的 git 存储库的每个子目录部署到不同的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999967/

相关文章:

amazon-web-services - 使用 AWS Lambda 和 API Gateway 进行持续部署

git 初始化远程仓库

git - 显示git中每个分支的最新提交

linux - 克隆 git repo 时文件夹大小不匹配

c# - 在 VSTS 中运行选择性测试类

github - 有没有办法将 Jenkins 与 Github Pull 请求结合使用?

asp.net - 持续集成基础设施的部署

git - 如何访问 Azure Web Apps 中的部署历史记录?

java - JGIT pull NoHeadException

java - sdkman 如何以非交互式方式安装最新的 Java 版本?