Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Github工作流适用于连续交付系统的多个环境_Git_Github_Azure Devops - Fatal编程技术网

Github工作流适用于连续交付系统的多个环境

Github工作流适用于连续交付系统的多个环境,git,github,azure-devops,Git,Github,Azure Devops,如何使用GitHub for Azure DevOps CI/CD从一个分支部分合并到另一个分支 我对Github和Azure DevOps真的很陌生。我刚刚开始使用Azure DevOps学习CI/CD,并使用GitHub作为项目源构建了一些管道 您能帮助我了解我们应该如何为CI管理it的工作流程吗 我有两个环境-一个是开发环境,另一个是实时环境。每个分支都有自己的分支,例如用于开发环境的live和development master。两名开发人员参与了功能A和功能B等更改。因此,在完成工作后

如何使用GitHub for Azure DevOps CI/CD从一个分支部分合并到另一个分支

我对Github和Azure DevOps真的很陌生。我刚刚开始使用Azure DevOps学习CI/CD,并使用GitHub作为项目源构建了一些管道

您能帮助我了解我们应该如何为CI管理it的工作流程吗

我有两个环境-一个是开发环境,另一个是实时环境。每个分支都有自己的分支,例如用于开发环境的live和development master。两名开发人员参与了功能A和功能B等更改。因此,在完成工作后,他们将更改提交并合并到使用CI/CD管道自动部署的开发分支

在开发环境中,测试人员测试了代码,发现功能B没有按应有的方式工作。并对功能A执行“确定”

现在我们只想将与特性A相关的代码部署到主分支。这方面的工作流程应该是什么?我们如何合并到主分支


PS:每次提交的CI触发器都发生在任何分支上。Commit id与Azure board中的工作id相关联。

Microsoft关于的文档非常值得一读,其要点是尽可能使事情简单

如果您使用的是yaml代码中将构建(CI)和发布(CD)阶段定义为一个管道的地方,那么这会鼓励您从一个分支构建和部署代码

如果真的是两个开发人员和两个功能同时开发/正在开发,我会说开发分支是过度的,只有主分支和功能分支就足够了。其想法是,在功能B被合并之前,功能A被合并到master,并通过您的管道一直到您的活动环境。希望在少数情况下,master会中断,然后是“停止生产线”,每个人都会在任何进一步的功能合并之前修复master

如果您对可能破坏master感到不安,并且提高不这样做的信心的唯一方法是对环境进行物理部署,那么您可以研究应用程序体系结构,使基于功能分支(例如容器化()或无服务器()的上下环境既及时又经济高效)和/或引入在构建时运行的集成测试套件

大多数管道将相同的构建构件从一个环境推送到下一个环境以最小化风险,这在.net应用程序(DLL包等)中尤其常见。您描述的场景中的问题是,如果您为功能A选择提交,然后构建该功能,那么您将把应用程序的未经测试的新版本推向生产。你们不知道你们是否犯了错误,或者更糟糕的是,特性B中的东西允许特性a工作。最简单的解决方案是更频繁地推动较小的更改,通过管道进入生产(连续交付)


祝你在这个项目上好运

微软的文档非常值得一读,主要的一点是让事情尽可能简单

如果您使用的是yaml代码中将构建(CI)和发布(CD)阶段定义为一个管道的地方,那么这会鼓励您从一个分支构建和部署代码

如果真的是两个开发人员和两个功能同时开发/正在开发,我会说开发分支是过度的,只有主分支和功能分支就足够了。其想法是,在功能B被合并之前,功能A被合并到master,并通过您的管道一直到您的活动环境。希望在少数情况下,master会中断,然后是“停止生产线”,每个人都会在任何进一步的功能合并之前修复master

如果您对可能破坏master感到不安,并且提高不这样做的信心的唯一方法是对环境进行物理部署,那么您可以研究应用程序体系结构,使基于功能分支(例如容器化()或无服务器()的上下环境既及时又经济高效)和/或引入在构建时运行的集成测试套件

大多数管道将相同的构建构件从一个环境推送到下一个环境以最小化风险,这在.net应用程序(DLL包等)中尤其常见。您描述的场景中的问题是,如果您为功能A选择提交,然后构建该功能,那么您将把应用程序的未经测试的新版本推向生产。你们不知道你们是否犯了错误,或者更糟糕的是,特性B中的东西允许特性a工作。最简单的解决方案是更频繁地推动较小的更改,通过管道进入生产(连续交付)


祝你在这个项目上好运

功能A和功能B是两个不同的分支吗?没有功能A和功能B可以完成任务。例如,功能A可以创建一个页面,功能B可以创建另一个页面。当工作完成时,它们最终将与主分支合并。功能A和功能B是两个不同的分支吗?没有功能A和功能B是可以完成任务的工作。例如,功能A可能创建一个页面,功能B创建另一个页面。当工作完成后,它们最终将与主分支合并。实际上,我面临的主要问题是如何将代码从不同的开发人员中分离出来,因为它们将来可能会更多。在前面,每当Qa团队传递任何工作项时,我们都会从该故事或工作项中获取变更集,并将它们合并到staging分支。但对于github,如果我做同样的事情,例如使用提交ID并进行这些提交,我不能完全确定这种方法是否有效