钩子的概述

你可以在特定的时机使用钩子来运行自定义的脚本。

钩子应该储存在.kamal/hooks文件夹中。运行kamal init将建立该文件夹并添加一些示例脚本。

你可以在配置文件中设置hooks_path来更改它们的位置。

如果该脚本返回了一个非零退出码,那么该命令将被中止。

KAMAL_*环境变量对钩子命令可用,以便进行细致的审计报告,例如触发部署报告或触发一个 JSON webhook。这些变量包括

  • KAMAL_RECORDED_AT — UTC 时间戳,采用 ISO 8601 格式,例如 2023-04-14T17:07:31Z
  • KAMAL_PERFORMER — 本地用户正在执行该命令(来自 whoami
  • KAMAL_SERVICE_VERSION — 缩短的服务和版本,用在消息中,例如 app@150b24f
  • KAMAL_VERSION — 即将被部署的完整版本
  • KAMAL_HOSTS — 由命令针对的主机,以逗号分隔的列表
  • KAMAL_COMMAND — 我们正在运行的命令
  • KAMAL_SUBCOMMAND可选: 我们正在运行的子命令
  • KAMAL_DESTINATION可选: 目标,例如 “staging”
  • KAMAL_ROLE可选: 目标角色,例如 “web”

可用的钩子包括

你可以在要避开运行钩子时传递--skip_hooks

注意: 钩子文件名必须是钩子名称,没有后缀。例如,pre-deploy钩子应被命名为“pre-deploy”(没有任何文件后缀,例如 .sh 或 .rb)。