使用Jenkins进行CI / CD和发布管理

时间:2018-02-04 16:11:32

标签: git jenkins continuous-integration continuous-delivery

设置

  • Visual Studio 2013
  • SCM使用Git与网络文件系统上保存的裸存储库
  • SourceTree
  • Jenkins构建服务器
  • 典型项目包括c#WinFroms和Web Api / MVC应用程序
  • 每个VS解决方案都包含测试项目,例如单元测试/集成测试
  • 甲骨文

问题

开发团队的Jenkins / Git设置的最佳实践和技术是什么?

到目前为止,我的计划是在运行Windows Server 2012的VM上运行Jenkins master(我已经看过Docker但是现在我没有在我们的设置中使用它)。但是,代理将安装在同一服务器上。为什么?提前思考,随着更多的添加,测试开始需要更长的时间,特别是集成测试。我对这种方法的理由是,它可以更容易地将代理移出,几乎没有工作来更新在主服务器上同时创建的所有作业。这当然完全基于我自己对Jenkins中事物如何挂起的假设,所以我愿意接受有关这种方法的反馈。

目前,该团队将拉入存储库的主分支以在本地工作。如果长期开发需要分支,然后合并回master,触发Jenkins的构建。

至于管理发布版本,我正在考虑采用这种方法。首先确定变化的类型,例如major / minor并相应地设置项目assemblyinfo.cs的前两部分,例如2.1。*其中*将由Jenkins插件替换/管理。据我所知,这是最好的方法,再次接受对此的反馈。

我是否应该使用其他开源工具来协助发布管理?

我们今天的构建服务器可以:

  • 提交到远程存储库后触发构建
  • 运行测试项目并在需要时使构建失败

这是事情变得棘手的地方,因为我已经看到了用于发布构建的流程/工作流的各种方法。我们没有主流的变更管理工具,除了可通过Lotus Notes访问的多米诺骨牌数据库,用于跟踪和管理变更请求。

我需要克服的障碍是如何有效地控制发布管理阶段。使用管道并使用输入请求暂停管道是否是良好的做法/允许。在这种情况下,开发人员可以选择他们想要在管道中走多远的路径,例如发布到UAT或一直到生产。

在我以前的工作中,一个版本将涉及:

  • 提出更改票证(已获得适当的批准)
  • 打包与故障单相关联的人工制品
  • 根据链接的文物发布到UAT临时区域
  • 如果UAT的发布成功,则可以安排自动发布。

我想得到一些接近我上面描述的内容,但不确定那里有什么可以实现我的开源软件目标。所以我希望SO社区中有人知道!我想做的最后一件事是花时间建立一个已经存在的东西的自定义工具,或者甚至更糟糕的是,选择错误的工具,这会导致后来的很多痛苦。

0 个答案:

没有答案