8.8.2. 配置 Post Commit 构建 hook
配置提交后构建 hook 的方法有多种。以下示例中所有形式具有同等作用,也都执行 bundle exec rake test --verbose
:
Shell 脚本:
postCommit: script: "bundle exec rake test --verbose"
script
值是通过/bin/sh -ic
执行的 shell 脚本。当 shell 脚本适合执行构建 hook 时可使用此选项。例如,用于运行前文所述的单元测试。若要控制镜像入口点,或者如果镜像没有/bin/sh
,可使用command
和/或args
。注意引入的额外
-i
标志用于改进搭配 CentOS 和 RHEL 镜像时的体验,未来的发行版中可能会剔除。命令作为镜像入口点:
postCommit: command: ["/bin/bash", "-c", "bundle exec rake test --verbose"]
在这种形式中,
command
是要运行的命令,它会覆盖 exec 形式中的镜像入口点,如 Dockerfile 引用中所述。如果镜像没有/bin/sh
,或者您不想使用 shell,则需要这样做。在所有其他情形中,使用script
可能更为方便。将参数传递给默认入口点:
postCommit: args: ["bundle", "exec", "rake", "test", "--verbose"]
在这种形式中,
args
是提供给镜像的默认入口点的参数列表。镜像入口点必须能够处理参数。Shell 脚本带有参数:
postCommit: script: "bundle exec rake test $1" args: ["--verbose"]
如果您需要在 shell 脚本中正确传递参数,请使用此表单。在
script
中,$0
将为 "/bin/sh",$1
,$2
等是args
中的位置参数。命令带有参数:
postCommit: command: ["bundle", "exec", "rake", "test"] args: ["--verbose"]
这种形式相当于将参数附加到
command
。
同时提供 script
和 command
会产生无效的构建 hook。
8.8.2.1. 使用 CLI
oc set build-hook
命令可用于为构建配置设置构建 hook。
将命令设置为提交后构建 hook:
$ oc set build-hook bc/mybc \ --post-commit \ --command \ -- bundle exec rake test --verbose
将脚本设置为提交后构建 hook:
$ oc set build-hook bc/mybc --post-commit --script="bundle exec rake test --verbose"