我们有一个开发模式,每个开发者负责部署他/她负责的程序。
我们想要达到的是以下几点:
目前我们已经将所有的部署脚本编写在结构中 。
我们为每个应用程序设置了一个帐户。 该帐户的SSH密钥分发给负责部署该应用程序的开发人员。 此帐户也用于运行应用程序。
这实现了第1点,第4点和第2点,但不是3.它还有一个缺点,即服务器环境必须准备好,因为我们不想为应用程序帐户提供根访问权限(依赖项由root用户安装,目录创build)。
为了解决上述问题,我们应该如何制定我们的部署战略,而我们是否错过了战略的一些重要目标?
我们现在有一个类似的策略,我们正在摆脱它,正是因为你的观点3)。
程序员也负责发布的情况看起来非常好,简单,方便和快速,但是如果你关心系统的稳定性和问责性,它很快就会变成噩梦,因为它鼓励快速入侵(“没有人必须知道,在这里,我们迅速修复它,就像它从未发生过一样“),并劝阻正确的文档(”但每个人都知道“)。 同行评审? Fuhghehtaboutit;)
所有你会得到这样一个系统是一个系统pipe理员和程序员之间的永久的斗争,相信我,我在那里不久前。
稳定和有据可查的系统的唯一途径是,释放所需的所有步骤都要经过适当的logging,脚本化和尽可能经常testing,理想的情况是testing系统应该每天自动重build。 一旦你在这个阶段,任何人都可以运行脚本并发布, 而不应该是写这些脚本的人,因为他没有兴趣报告自己的遗漏。