每次发布
我要逐台 SSH 登录服务器,拉取新版本,重启服务,再用 curl 访问健康检查,一次一台机器。
现在的做法
ssh web-1。git pull。sudo systemctl restart app。curl /healthz。等等。再来一次。exit。ssh web-2。
每次发布,每台机器。
对 Kitewell 说一次
创建一个面向我的 Web 服务器组的 chain 工作流:用 git 拉取 /srv/app,等待我批准,重启 app 服务,并在每台机器上检查 http://127.0.0.1:8080/healthz,然后再处理下一台。
设置就这么多。Kitewell 会列出每一步供你检查,在你应用之前不会保存任何内容。
想做你自己的版本,就复制下面这段话,填好空白处:
为 [我的服务器组] 创建一个工作流:一次一台机器,用 git 拉取 [应用的文件夹],等待我批准,重启 [应用的服务],并检查 [健康检查的地址],然后再处理下一台。
之后它会自动运行
发布 · web 组正在这台电脑上运行
- 拉取新版本在机器上执行 fast-forward 拉取。完成
- 等你确认重启会逐台机器等待你的批准。等待你处理
- 重启服务在你批准后运行。完成
- 确认能响应尝试六次,每次间隔五秒。始终没有响应的机器会让发布停止。完成
取而代之的是
发布 · web 组
web-3 未通过健康检查。发布已停止。
- web-1正常
- web-2正常
- web-3/healthz 无响应
- web-4未处理
须知
- 由于该组在第一次失败时就会停止,一旦某台机器检查失败,发布就会中止,其余机器不受影响。
- 主机密钥在项目中批准,密码一律来自密钥,因此工作流里两者都没有。
所需条件
- 注册为一个组的服务器:一次一台机器,失败即停止