Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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_Teamcity_Build Automation_Git Flow - Fatal编程技术网

为Git流构建配置

为Git流构建配置,git,teamcity,build-automation,git-flow,Git,Teamcity,Build Automation,Git Flow,当使用Git和Git flow时,人们是如何设置构建配置的?我有几个任务要完成: 提交-编译、运行静态代码分析、单元测试、包 集成测试-运行集成测试 部署到测试-将应用部署到测试环境 功能测试-运行端到端功能测试 部署到QA-手动拉入运行冒烟测试的QA环境 对于master、develop、release功能分支,我很好奇人们如何将它们映射到构建过程中。这是我的工作流程: 它是根据nvie的改编的,我们目前有 CI构建 VCS根目录有一个分支规范,其中包括develop、feature

当使用Git和Git flow时,人们是如何设置构建配置的?我有几个任务要完成:

  • 提交-编译、运行静态代码分析、单元测试、包
  • 集成测试-运行集成测试
  • 部署到测试-将应用部署到测试环境
  • 功能测试-运行端到端功能测试
  • 部署到QA-手动拉入运行冒烟测试的QA环境
对于master、develop、release功能分支,我很好奇人们如何将它们映射到构建过程中。

这是我的工作流程:

它是根据nvie的

改编的,我们目前有

  • CI构建
    • VCS根目录有一个分支规范,其中包括develop、feature/*、release/*、hotfix/*和master
    • 所有分支的VCS提交触发器
    • 拉取请求生成功能分支,链接生成结果并批准
    • 自动合并母版->开发
  • 发行说明构建
    • CI构建上的快照
    • 从提交生成发行说明并提交
  • 部署到开发人员构建中
    • CI构建上的快照
    • 计划每天部署两次
    • 只部署了开发分支
  • 部署到UAT构建中
    • 手动步骤
    • CI构建上的快照
    • UAT只能部署release/*、hotfix/*或master
  • 部署到产品中
    • 手动步骤
    • 部署到UAT构建时的快照
    • 此处只能部署master(当释放或hoftix关闭时,需要首先将master部署到UAT进行烟雾测试)
Teamcity自动合并不允许使用通配符,因此我们正在研究自己的方法来保持分支同步

  • 主->开发,发布/*,修补程序/*
  • 开发->功能/*

我喜欢你在回答中解释的过程。我唯一不明白的是,当你自动合并master->development时,“部署到UAT构建”。如果构建是从发行版或修补程序分支生成的,我为什么要这样做?难道你不想在“部署到Prod”完成后使用gitflow的finish修补程序/发行版来确保生产与master branch同步吗?@AliB谢谢,这是错误的。它实际上是主分支CI构建的一部分,即当修补程序或版本关闭并合并时。我已经更新了我的answer@JohSquared,我仍然认为,在部署到Prod Build config时,需要合并master进行开发。主分支需要是生产中的镜像代码,如果您更早地合并它,则主分支和产品将不同步。当您需要时,创建修补程序就成了一个问题。@AliB在GitFlow的情况下,当发布或修补程序关闭时,一旦提交到主程序中,您就应该将主程序同步到开发中。在我的例子中,在任何分支上进行提交时,都会触发CI生成。因此,例如,当一个发布被测试并准备好生产时。发布被关闭并合并到主版本->触发主版本上的CI构建->成功时主版本合并到开发->主版本运行部署到UAT构建(快速冒烟测试)->运行部署到生产构建