BuildPostCommitSpec 包含构建提交后钩子规范。该钩子在镜像的最后一层提交后且将其推送到注册表之前,立即在一个运行构建输出镜像的临时容器中执行命令。命令的执行当前工作目录 ($PWD) 设置为镜像的 WORKDIR。
如果钩子执行失败,则构建将被标记为失败。如果脚本或命令返回非零退出代码,或者与启动临时容器相关的任何其他错误,则构建将失败。
有五种不同的方法可以配置钩子。例如,以下所有形式都是等效的,并将执行 rake test --verbose 。
1. Shell 脚本
"postCommit": { "script": "rake test --verbose", }
以上是一种便捷形式,等效于
"postCommit": { "command": ["/bin/sh", "-ic"], "args": ["rake test --verbose"] }
2. 将命令作为镜像入口点
"postCommit": { "commit": ["rake", "test", "--verbose"] }
如 Docker 文档中所述,命令在 exec 形式中覆盖镜像入口点:https://docs.docker.net.cn/engine/reference/builder/#entrypoint。
3. 将参数传递给默认入口点
"postCommit": { "args": ["rake", "test", "--verbose"] }
只有当镜像入口点可以处理参数时,此形式才有用。
4. 带参数的 Shell 脚本
"postCommit": { "script": "rake test $1", "args": ["--verbose"] }
如果您需要传递在 shell 脚本中难以正确引用的参数,此形式很有用。在脚本中,$0 将为 "/bin/sh",$1、$2 等是来自 Args 的位置参数。
5. 带参数的命令
"postCommit": { "command": ["rake", "test"], "args": ["--verbose"] }
此形式等效于将参数附加到 Command 切片。
同时提供 Script 和 Command 是无效的。如果没有指定任何字段,则不会执行钩子。 |