我想创建一个手动触发的Team City构建,将我们的网站部署到其生产环境。我有些犹豫,因为我担心人们会意外触发构建。
我知道我可以通过限制大多数人的访问权限或使部署过程稍微困难一些(例如两个步骤)来半解决这个问题。
是否有更好的技巧?是否可以使用“您确定吗?”样式的对话框?
我知道我可以通过限制大多数人的访问权限或使部署过程稍微困难一些(例如两个步骤)来半解决这个问题。
是否有更好的技巧?是否可以使用“您确定吗?”样式的对话框?
首先,你应该采纳约翰·霍尔的建议,除非只有很少一部分人需要运行它,否则防止其他人运行。
但我们可以做得更好,防止那些本应能够运行构建的人误点。添加一个配置参数复选框。这样,当有人点击“运行”按钮时,它会快速失败。他们必须点击运行按钮上的省略号,然后在像“您确定吗?”的消息旁边单击复选框。
为此,使用类似于confirm
的名称添加参数,然后单击“编辑”链接。在弹出窗口中,单击Spec旁边的编辑按钮。将类型改为Checkbox
。将检查值设置为true
,将未选中值设置为false
。或者其他对您有意义的值。
单击保存
以保存规范,然后返回编辑参数弹出窗口。将值设置为false
。这是复选框的默认值。
作为脚本中的第一件事,检查参数%confirm%
是否设置为字符串"true"
或是否设置为"false"
。如果它是"false"
,您想立即exit 1
:运行构建的人没有选中confirm
复选框。
如果愿意,您可以每次使运行自定义构建弹出窗口出现。要这样做,在编辑参数规范
窗口中,将显示更改为Prompt
。默认值仍将不执行部署,但对话框将每次弹出。
您还可以使文本框旁边显示的标签不是参数名称,而是任意字符串。在 编辑参数规格
弹出窗口中,将 label
设置为类似于 你发誓要这样做吗? 的内容。
我认为你使用TeamCity的基于角色的访问控制来防止大多数人运行生产部署是正确的做法。对于有特权的团队成员,我鼓励他们从仪表板中隐藏/删除Deploy to Prod配置。你可以通过点击配置右侧的X来实现这一点。对我们来说,这是一种有效防止随意误操作的方式。当你想要运行Deploy to Prod构建时,可以直接浏览项目页面。
针对生产环境,我们需要确认所部署的域。以下是实现此目的的简单方法:
if [ %confirm% != %dep.Builds_Ci.build.counter% ]; then echo 确认正确的构建计数器号码失败,应该是%dep.Builds_Ci.build.counter% exit 1; fi
- bradw2k