谁负责建立自动构建系统?


15

我是公司的项目经理。我与几个开发人员团队一起使用标准的,众所周知的CVS版本控制系统。我希望看到实施了持续集成和自动化构建,以防止构建中断和错误部署潜入生产服务器的问题。

我确定我可以自己进行设置,但是我不想自己这样做,有两个原因:

  1. 我没有时间 我有自己的职责,包括市场营销,与开发团队以外的团队成员与其他利益相关者沟通,与客户沟通以及项目规划。

  2. 最重要的是,我是项目经理。我的目的是提供领导能力,而不是微观管理开发团队

在开发团队中找到对设置有热情的人,我可以做些什么?考虑到开发人员需要Java,Spring和Google App Engine的知识,开发人员是否适合此任务?有什么技巧可以帮助人们在害怕改变的地方促进改变?


7
对我来说,这是个新闻,项目经理的角色是提供领导。
Yuriy Zubarev

最后的知识需求清单,开发人员可能会或可能不会拥有的所有东西,非开发人员当然不会。取决于你的。
2011年

5
仍然使用CVS几乎为-1。
约翰内斯·鲁道夫

@Johannes-如果由我决定,我们不会。实际上,我已经使用了SVN存储库设置。
jmort253 2011年

1
尽管CVS是旧技术(远非我的最爱),但它仍然可以工作,并且很多地方仍在使用它。而且,如果它正在做这项工作,那么您需要将它留在原处可能很有意义。我们在办公室使用它,即可完成工作。
Zachary K

Answers:


14

我先研究一些可能性。例如,Hudson是一种颇受欢迎的持续集成服务器,并且非常灵活。您可以通过以下方式向您的开发团队发送电子邮件:

我想介绍一个持续集成工具,以使有毒的修订版本早于以后出现。我看过[哈德逊,acme CIS,foo],它们看起来都可以用。鉴于我们将CVS与[在此处列出注意事项]一起使用,我正在寻找建议,并且我将与团队的决定一起生活。

戴夫,请负责达成共识并开始运作。小组-请在星期四结束之前将您的意见提供给Dave,以便我们在星期五进行测试。

建立联系后,请寄给我我的凭据。

这种方法具有以下优点:

  • 你是委派,而不是倾销
  • 人们知道您已经做过一些研究,您指出的内容的质量有助于定义您对所实施工具质量的期望
  • 您知道[警告],除非他们真的是手头的任务破坏者,否则请不要讨论它们
  • 您允许一点民主。当然,您将登录查看是否有任何问题,但是必须处理CIS的人将是选择该平台的人。

在我的模拟场景中,Dave被选中是因为他的工作量最少,并且设置新服务器可能没有问题。根据工作量,Dave可能只需要您一个。那太主观了,我只需要提一下就可以了。not my job to do that如果您是唯一有时间这样做的人,您将无法总是说出特别的话。如果每个人都在努力工作,那么他们您愿意提供帮助的看法就变得更加重要。衡量是随着时间的推移而发展的一项技能。

无论如何,您要么在星期五之前拥有一台CIS服务器,要么详细说明为什么没有额外的帮助就不可能做到这一点。


2
感谢您的输入和建议。我并不是想not my job摆脱困境,而是因为项目经理有时很容易过多地参与开发团队的工作。通过将其委托给发展,我可以控制和统治他们。另外,如果他们负责设置,他们将更有可能使用它,而如果我进行设置,我将获得很好的学习经验,以了解如何设置持续集成,但没有投资回报,并且没有付出任何代价的机会。完成我的其他任务。此外,示例电子邮件非常有帮助:) +1
jmort253 2011年

@ jmort253-是的,我知道您不会避免工作。为了清楚起见,我将进行更新。
蒂姆·波斯特

3
+1:让团队参与进来,让他们做出技术决策。这是让他们接受和使用新系统的关键。
彼得Török

14

我认为它有三种可能的方式:

  1. 让开发团队中的某人快速评估可能的工具,并让他快速提出建议。如果您的单个项目具有适当的构建脚本(即,您可以在IDE外部构建项目),那么将它们挂钩到CI应该相当快。

  2. 将构建基础结构视为您团队中的内部项目,并对其进行管理。比第一点要复杂一些,但是如果做对了,您会得到一个更好的系统。同样,在团队中传播知识将减少下文所述的过度专业化的风险。您还将获得同行评审的好处。但是,某些程序员可能会认为此任务是贬义的,因此可能不会花太多精力。

  3. 雇用一名开发人员作为构建主管,并请他设置所有工具。然后继续使用他来改进系统,添加指标,自动生成文档,进行自动测试等。这会增加成本,但如果操作正确,则可以通过提高开发团队的效率非常迅速地偿还此人的投资。这个人应该精通您团队使用的语言和框架,并希望将它们粘贴到系统中。另一方面(根据评论),这可能不在您的预算范围之内,创建专门职位可能会导致文档不足的解决方案,从而使过渡变得困难。

也就是说,开始任何事情之前,请确保您真正想要的东西。您的问题缺少一些细节,无法指导您正确的技术方向。您需要知道使用此类工具所希望获得的收益,还需要对所需系统有一个总体了解。在创建一个将所有问题联系在一起的环境方面,可以走很长的路要走,但是如果没有一个针对您的总体规划,也可能导致圈子运转,并使事情比现有情况更加复杂。

我曾经告诉过一个经理,工具是好的,但是没有流程,它们是无用的。我只希望他能跟进他说的时候到了,将它们落实到位...

因此,如果您决定雇用某个人,那么聘请程序员而不是拥有ITish背景的人无疑具有优势。要点是,这个人可以花费一些时间和精力来创建将不同系统集成到一个一致系统中的粘合代码和插件。

希望这有所帮助


2
@Newtopian-这确实有帮助。尤其是在盲目尝试实施某件事之前先制定计划的部分。谢谢。+1
jmort253 2011年

1
+1漂亮的建议。另外,无论您使用的平台是什么,如果您的团队成员是主要的Linux主管或其他经常有开发人员使用构建脚本的其他OS,那么他们可能会对这个项目感到兴奋。
Garet Claborn

1
+1代表3)这些天,每个软件团队都应该有专门的构建经理
Sean Patrick Floyd

1
我记得读过一篇有关(37signals?GitHub?I dunno)的著名公司的文章,他将负责构建的责任分配给了最后一位破坏构建的人。这样可以确保(1)人们注意不要破坏构建,并且(2)团队的多个成员(理想情况下)会获得有关构建系统的学习经验。
米歇尔·蒂利

1
@jmort迟早会达到这样的地步:没有人能付出没有这样一个专门职位的代价
肖恩·帕特里克·弗洛伊德

3

如果您担任领导角色,则要确定缺少的组件/实践,并负责确保正确实施。实施任务可以委托或不委托,但最终是领导者的责任。

接受的关键是理解,或至少给您带来疑问的好处。您可以讨论您想做什么,并带来成本和收益。如果讨论没有带来理解,则可以依靠他们对您的决定的信任,但前提是您已经建立了这样的库。

如果您的代表因时间限制而这样做,请在站立会议或团队会议中提出,并请一名志愿者。如果没有人来,只需像其他任何工作一样分配它。

更新:

每个公司都有一个组织结构。领导角色负责该级别的资源。他们还有责任指出并解决任何问题。他们可能需要更多资源和/或建议,这是您上链的第一步。如果您可以解决问题,则可以选择自己实施或委派解决方案。这可以而且应该让它将直接影响的人们参与进来,最好是与他们合作。

我不能说董事级别及以上职位不应直接对公司中的特定个人或团体负责。这实际上取决于公司的组织结构。我曾在初创公司工作,这些公司的CTO直接负责开发人员和测试人员。在更传统的大型公司中,该级别的管理层没有所需的可见性或熟悉度,因此无法在较低的级别上做出适当的决策。


假设您是其他领导者的领导者?CEO是否有责任确定项目团队中的Java初级开发人员是否需要额外的培训?
jmort253

@ jmort253简短的答案也许是,但这取决于公司的组织结构。如果公司的结构扁平小,则首席执行官可能有责任确保开发人员得到培训。确实,我曾在许多初创公司工作,这些公司的副总裁有直接的报告,而不是经理。
Dietbuddha

1

我主要是一名开发人员,我会尽可能地进行设置(即当我没有明确禁止这样做的时候)。通常,由于我工作的地方是.NET商店,因此我选择CruiseControl.NET是因为它是开源的,可与大多数主要的源代码控制系统一起使用并且相对易于使用。我一直想将环境球设置为输出之一,但这通常是我无法控制的。

在会议上进行讨论,首先看看是否有人愿意这样做-只要不影响他们当前正在从事的项目。

在我当前的位置(国家实验室之一),我们已经设置好了它,以便以一致的方式进行构建,以便希望了解我们正在做的工作的人员可以随时获取可运行的版本。 。他们不需要单元测试(项目经理的印象是,我们投入单元测试的工作本来可以用于将项目移植到.NET中)。

在我以前的位置,目的是使构建标准且跨产品保持一致。太多的产品只能在一台特殊的计算机上构建(在一个产品的情况下,涉及具有激进的DRM的第三方控制权,而这在很早以前就已经停业了,在开发人员退出后,我们必须将一台机器保持生存状态约5年)因为他是唯一可以制造这种现在已替换的商业运输产品的人)。此外,安装只能由一个早起的人来完成-因此,如果您需要在下午3点后进行构建,则需要等到第二天。

考虑到开发人员需要Java,Spring和Google App Engine的知识,开发人员是否适合此任务?

这取决于。如果您有一些质量好的QA专家,请先询问他们,然后再分配给他们。

首先进行设置并不复杂。最多不需要花几天的时间就可以完成设置(大多数情况下是在公司环境中,麻烦的是要有一个帐户来运行具有所需的所有权限的帐户)。


0

尝试从另一个方向进行设置-当生产环境中存在问题时,请开发人员负责修复并快速修复。然后介绍一种从最新代码,版本标记等进行编译的简单夜间构建的想法。如果构建失败,则不会进行升级。

我认为构建脚本应该归开发所有。当他们修改依赖项或进行更改时,他们是了解如何更新脚本的最佳人选。并告诉他们,如果项目管理者拥有该项目,则只要有问题,您就可以召集他们参加会议。


0

您可以在下一次会议上说:“好吧,我认为我们应该这样做,因为。谁可以实施它。”我给你的好处甚至超过了有人说“当然,我会做到”的几率。那么您不必为此而战。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.