【问题标题】:How can we improve our deployment and build systems?我们如何改进我们的部署和构建系统?
【发布时间】:2010-10-29 02:14:24
【问题描述】:

我们有 4 种不同的环境:

  • 分期
  • 开发
  • 用户接受度
  • 直播

我们使用 TFS,拉下最新的代码和代码。
当他们完成一项功能时,开发人员会单独将他们的更改上传到 Staging。如果网站是稳定的(通过非常松散的测试来确定),我们将更改上传到 Dev,然后是 UserAcceptance,然后再上线。

我们根本没有在源代码管理中使用构建/标签。

我应该告诉管理层什么?据我所知,他们似乎不认为有问题。

【问题讨论】:

    标签: asp.net tfs build-process


    【解决方案1】:

    如果这对你有好处,你可以成为你公司的Continuous Integration冠军。您可以对CI with TFS 的一个好的流程进行一些研究,编写一个建议的解决方案,将其传播给您的开发人员和直接经理,根据他们的意见对其进行修改并将其推销给管理层。或者你可以坐在那里什么都不做。

    我从事管理工作已经很长时间了。我一直很欣赏那些发现问题并提出深思熟虑的解决方案的人。

    【讨论】:

    • 查看“Hudson”hudson.com 获取工具。它允许您设置可以定期启动或手动启动的多个构建。
    【解决方案2】:

    谁的管理?他们离你有多远?

    即如果您只是普通开发人员,而您的经理是高级开发人员,那么请另找工作。如果您是高级开发人员,而您的经理是 CIO 类型,即实际运营业务......那么您的工作就是改变它。

    【讨论】:

      【解决方案3】:

      告诉他们,如果您使用的是非常昂贵的软件的关键功能,他们会花很多钱购买,那么告诉他们什么时候推出的代码是微不足道的。这意味着,如果引入了一个通过用户验收测试的细微错误,则只需区分两个版本以确定发生了什么变化。

      【讨论】:

      • “非常昂贵的软件,你花了很多钱”(注意)“关键功能”(我会说“标签”,但我不想让你说话时眼睛发呆techno-babble)“如果你在使用”(这是一个可行的建议)“这对等来说是微不足道的。” (利益或卖点)
      【解决方案4】:

      使用 TAGS 最重要的部分之一是您可以回滚到特定时间点。将其视为图像备份。如果部署了不好的东西,您可以放心地假设您可以“回滚”到以前的工作版本。

      此外,开发人员可以快速获取 TAG(dev、prod 或其他)并部署到他们的开发 PC...我一直使用此功能来调试生产问题。

      【讨论】:

        【解决方案5】:

        因此,您需要有人告诉其他开发人员,他们必须在每次构建完成时标记他们的代码并增加版本计数器。为什么你不能这样做?

        您还需要告诉管理层您认为已完成的测试水平还不够。这对于一个组织来说并不是一个独特的问题,他们可能会说他们已经知道了。与其等待重大问题出现,不如提及它并没有什么坏处。

        就进行构建或自动构建过程的个人而言,这取决于您是否真的需要它,具体取决于您有多少开发人员以及您进行构建的频率。

        【讨论】:

          【解决方案6】:

          是什么问题?正如您所说,您无法判断管理层是否看到了问题。也许他们没有!告诉他们您认为当前存在的问题以及解决问题的建议。问题的性质必须是“我们当前的流程失败了 10 次中有 3 次,而实施这个新流程会将这些失败减少到 10 次中的 1 次”。

          管理层需要看到以下方面的改进:降低成本、增加利润、减少时间、减少资源使用。 “因为它是广泛使用的最佳实践”是不够的。也不是,“因为它让我的工作更轻松”。

          管理层通常没有意识到问题,因为每个人都不敢说什么,或者认为他们不可能看不到问题。但你的世界和他们的世界不同。

          【讨论】:

            【解决方案7】:

            我发现至少有两个大问题: 1) 开发人员自己加载更改。所有更改都应来自源代码控制。您是否遇到过有人进行了更改,但从未进入源代码控制,然后在下一次部署时被意外删除?花了多少时间(金钱)试图找出问题所在?

            2) 缺乏明确的推广模式。看起来你们是在环境之间移动变化而不是“构建”。关键区别在于,如果两个更改由于它们的交互方式而在 UAT 中运行良好,那么如果只有一个更改被提升到生产环境,它可能会在那里中断。促进一致的代码 - 无论是通过标记还是通过压缩整个 Web 应用程序并提升 zip 文件 - 应该会减少问题。

            我致力于持续集成和部署解决方案,AnthillPro。我们使用 TFS 解决这个问题的方法是根据日期时间戳(当有人按下“交付到舞台”按钮时)从 TFS 中检索新代码。

            这为您提供了大多数(全部?)使用标签的可追溯性,而无需实际标记事物。系统只记录时间戳,并且通过测试环境的每次推送代码都与已知的代码快照相关联。我们也有客户在构建过程中放置​​标签。正如第一张海报所提到的 - CI 是一件好事 - 更少的工作,更多的可追溯性。

            【讨论】:

              【解决方案8】:

              如果您已经拥有 TFS,那么您就快到了。

              我所在的地方仅将 TFS 用于源代码控制。我们对 Dev/Stage/Prod 有类似的设置。我自己安装了构建服务器。完成后,我为我的一个项目添加了自动部署到 dev 的功能,并告诉了其他几个人。最初的接待是不冷不热的。

              后来我将 TFS Deployer 添加到组合中,并将其设置为自动将良好的开发构建部署到阶段。

              在此期间,主要的开发人员群体一直在争论“您在部署到阶段或生产之前是否获得了最新版本?”问题;我的东西工作顺利。相信我,管理层和其他开发人员注意到了。

              现在(6 个月后),我们有一条书面规定,您甚至不能在 Visual Studio 中使用“发布”命令。一切都经过 CI 构建和部署。当迁移到 prod 时,我们的生产组会从构建服务器中提取适当的副本。我什至对我们的 QA 小组进行了有关如何进行 Web 测试的培训,并且我们正在慢慢地将自动化测试集成到整个 shebang 中。

              这次闲逛的重点是它花了一段时间。但更重要的是,这只是因为我愿意跟着它跑并展示结果。

              我建议你也这样做。开始使用它,然后展示让其他人参与其中的好处。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-03-07
                • 1970-01-01
                • 1970-01-01
                • 2021-08-31
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-02-18
                相关资源
                最近更新 更多