关于预接收挂钩
当发生推送时,每个脚本都在隔离的环境中运行,并且可以对推送的内容执行检查。 如果 exit status 为 0,脚本将导致接受推送,如果 exit status 不为零,则会拒绝接受推送。
使用预接收挂钩来满足业务规则、强制执行法规遵从性,并防止出现某些常见错误。
如何使用预接收挂钩的示例:
- 需要提交消息来遵循特定的模式或格式,例如包括有效的事件单号或超过一定长度。
- 通过拒绝所有推送来锁定分支或仓库。
- 通过阻止关键词、模式或文件类型来防止将敏感数据添加到仓库。
- 防止 PR 作者合并他们自己的更改。
可以在 github/platform-samples
存储库中查看 GitHub Enterprise Server 的预接收挂钩示例。
对性能和工作流程的影响
对开发者及其工作流程的影响可能很大,因此必须谨慎考虑。 基于业务需求并经过深思熟虑实施的预接收挂钩将为整个组织带来最大好处。
预接收挂钩可能会对 你的 GitHub Enterprise Server 实例 的性能产生意外影响,因此应谨慎实施和审查。
由于实例的所有用户都存在出现故障和性能影响的风险,因此建议执行以下操作。
- 避免在预接收挂钩中发出 API 请求。 尤其是,我们强烈建议不要向外部服务发出请求,这可能需要更长的时间,并且可能会造成性能影响。
- 避免在预接收挂钩中长时间运行 Git 操作。 如果预接收挂钩在大型或繁忙存储库中执行 Git 操作,则可能会对实例的 Git 和整体性能产生负面影响。
注意: 为了避免因超时而拒绝推送,所有合并预接收挂钩的运行时间都应在 5 秒内。