Loading... ## 什么是CL/CD ## Travis ## GitHub Actions 这部分我写过了,具体可以看那篇文章。 ## WebHooks 什么是Webhook?用中文来说就是 钩子 , 在你的仓库有更改时,有事件发生时,及时的检测到。通过配置webhook,你可以在仓库发生变化时候,立即部署你的线上服务器。还可以将博客部署到服务器,因为我的博客是hexo的,每次换电脑写博客是件特别麻烦的事。 Webhooks允许我们建立关于项目的在GitHub上的事件集成.当事件触发的时候,会通过HTTP POST的方式,向我们的服务器发送请求.我们可以用这个服务器去更新外部跟踪,触发CI build,更新备份镜像,部署到生产服务器. 每个Webhook都可以安装在一个项目或者组织上,安装完毕之后,就可以随着订阅的时间进行触发. 每个项目的每个事件最多可以安装20个Webhook. ### 实质 1. receive the request 2. parse the headers, payload and query variables 3. check if the specified rules for the hook are satisfied 4. pass the specified arguments to the specified command via command line arguments or via environment variables. 触发后的HTTP请求会发送特殊的header给我们设定的URL. | Header | 描述 | | :---: | :---: | |X-GitHub-Event |被触发的事件的名称| |X-Hub-Signature|HMAC十六进制的签名| |X-GitHub-Delivery| 这次返回的唯一的ID| 具体可以看GitHub上的手册,有详细说明,hmac是用来验证身份的,需要在repo的webhooks上设置一个secret。 这里安利一个GitHub上写的挺好的webhook响应服务器。 https://github.com/adnanh/webhook ,其也提供了docker镜像 https://hub.docker.com/r/almir/webhook 。具体可以看仓库的文档,有说明,配置完成后可以响应GitHub上的request。但是用的alipne,没有git,就很艹,这不是很烦吗。要装git的话还要重新编译一个镜像。 发现可以用wget,那就用wget吧。 ```sh docker run -d \ --name=webhook \ -v /home/ubuntu/docker/webhook:/etc/webhook \ --restart=always \ almir/webhook -verbose -hooks=/etc/webhook/hooks.json -hotreload ``` 注意这里是bash脚本要有执行权限,不然会提示找不到,我这里找了半天问题。 ```json [ { "id": "redeploy-webhook", "execute-command": "/var/scripts/redeploy.sh", "command-working-directory": "/var/webhook" } ] ``` ## 参考文献 [The Product Managers’ Guide to Continuous Delivery and DevOps](https://www.mindtheproduct.com/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/) ``` ``` Last modification:January 16th, 2021 at 12:50 pm © 允许规范转载 Support 确定不打赏一下支持博主吗 ×Close Appreciate the author Sweeping payments Pay by AliPay