[自个开开源] 响应 GitHub Webhooks 实现自动部署的 Web 服务

2019-03-22 19:45:59 +08:00
 quietjosen

今天研究并实现一个响应 GitHub Webhooks 实现自动部署的 Web 服务。

简单收拾了下代码和文档(写文档比写代码累…),开源至此

前提条件

这并不是一个 Hello Word 教学示例,而是我自己在用的实际项目。假设你已经知道下列技术或满足其条件:

主要功能

更多的,看 README 吧。

4605 次点击
所在节点    程序员
28 条回复
quietjosen
2019-03-23 12:15:47 +08:00
@azh7138m
@life1st 简单试了下,貌似 Now 必须拥有全部 GitHub 仓库权限才能干活?
azh7138m
2019-03-23 12:18:51 +08:00
@quietjosen 我记得是 read only 来着,那私有仓库要怎么自动部署?

github app 不是必须的,那个是集成 CI,可以本地使用 now cli。
v2dead
2019-03-23 14:37:11 +08:00
这个 github 的 webhook 接口我之前接了一下,openresty 的 lua 做的,前后 20 多行搞定,这还是因为 lua 库比较麻烦,验签不方便。
这种东西都不需要上什么第三方吧?整的有点像之前 npm 那个 left-pad 一样。
倒不是反对楼主开源这种项目,项目放出来倒是很好的,我只是觉得去用这类项目的咸鱼大概已经退化到忘记怎么写代码了。
quietjosen
2019-03-23 14:45:52 +08:00
@v2dead 术业有专攻,比如并不能要求 Vue 专家也是部署和运维专家。而且,如果需求深入的话,比如密码验证、邮件提醒、CI/CD,全部自己做,既不是 20 行代码能搞定,也不应该将本应用于开发的时间,分配到这方面。
v2dead
2019-03-23 14:51:41 +08:00
确实没什么问题,所以本身项目还是很好的,尤其文档还很详细。
但是对于一个普通后端人员来说,随手处理一个验签,执行一个外部脚本,再发送一封通知邮件的接口应该比去找一个这种项目并学习怎么配置部署花的时间少的多了。。。。
ddiu8081
2019-03-23 15:17:53 +08:00
支持🌝
以前也打算写个来着...然后后来换了 caddy server 就用不着了..
Les1ie
2019-03-23 15:43:37 +08:00
那我也分享一下现在正在用比较简易的 caddy 自动部署解决方案,可能没有 ci 之类的功能丰富,不过小项目,怎么快怎么来..(感觉非常方便,想给 caddy 10 个 star )
1. 安装带 git 插件的 caddy: `curl getcaddy.com -sL |bash -s personal http.git`
2. 配置 caddyfile,放到项目的父目录(如果有多个项目,只需要开这一个 caddy 即可)
```
$ cat Caddyfile
http://0.0.0.0:9009 {
tls off
log stdout

# web 页面
git {
repo git@gitlab.com:example/example.git
path example
hook /example
key /root/.ssh/id_rsa
hook_type generic
branch master
then docker exec container_name npm run build # 重新 build 源码
then ./do-something-else.sh
}
git {
repo git@gitlab.com:example/example2.git
path example2
hook /example2
key /root/.ssh/id_rsa
hook_type generic
branch master
then docker exec container_name2 other command
}
}
```
3. 到项目的父目录去运行去`caddy`
4. github/gitlab 指定 webhook 地址 `example.com:9009/example``example.com:9009/example2`, 多个仓库以此类推
5. 招开发,更多人选择 DevOps,一份工资,几个人的工作量
haozes
2019-03-25 17:38:20 +08:00
楼主写的,的确和 webhook handler 那个库差不多。 我就是用这个搭的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/547539

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX