• Stars
    star
    492
  • Rank 89,476 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 7 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GitHub 自动处理 issue、PR、releases 机器人

github-bot

github 机器人:在服务端上启动一个基于 koajs 的 http server ,建立一些项目的规范(如 issue 格式、 pull request 格式、配置一些指定 label 根据的 owner 、统一 git commit log 格式等),基于 github webhooksgithub api 让机器人(通常是一个单独的帐号,如 @jiandansousuo-bot )自动处理一些事情,从而达到快速响应、自动化、解放人力的效果。

Build Status js-standard-style Test Coverage

声明

仓库@xuexb/github-bot 是用来演示 github-bot 的基本功能,因为具体需要实现的功能,可能因项目而不同,如果你需要她,你可以 fork 并相应的添加、删除功能。以下功能是一些常用的 show case 。

功能 - Feature

Issue

  • 没有使用 创建 issue 页面提交的 issue 将直接被关闭 - 示例
  • 根据 创建 issue 页面提交的 issue 类型自动打上对应 label - 示例
  • 当 issue 标记 label 为 need demo 时,自动回复,需要相关demo - 示例
  • issue 自动 assign 给指定人员,需要配置 package.jsonconfig.github-bot.labelToAuthor 映射 - 示例

Pull Request

  • 发 PR 时根据打的 label 自动添加指定的 reviewer ,需要配置 package.jsonconfig.github-bot.labelToAuthor 映射 - 示例
  • 发 PR 时标题不规范时提醒修改,需要配置 package.jsonconfig.validate-commit-msg.type 功能关键字,标题必须以 功能关键字: 开头 - 示例
  • 发 PR 时自动根据标题的 PR 标题规则 前缀生成对应的 label , feat->enhancement, fix->bug - 示例

Release

  • 当往远程第一次推送新版本号时,自动列出最新版本距离上一版本的 commit log 并发布 release notes ,由于需要使用两个 tag 去对比,所以项目的第一个 tag 就不处理 - 示例

规则 - Rules

issue 规则

必须使用 创建 issue 页面来提交 issue ,否则将直接被关闭

labels 规则

  • invalid - 未定义, 内容 不规范
  • need demo - 需要提供预览链接
  • need update - 需要更新修复问题
  • bug - bug
  • duplicate - 重复
  • enhancement - 新功能
  • question - 提问
  • wontfix - 不修复的问题

commit log 和 PR 标题规则

所有标题必须以 功能关键字: 开头

参考: http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html

功能关键字介绍如下:

  • feat - 新功能(feature)
  • fix - 修补bug
  • docs - 文档(documentation)
  • style - 格式(不影响代码运行的变动)
  • test - 增加测试
  • chore - 构建过程或辅助工具的变动
  • revert - 撤销
  • close - 关闭 issue
  • release - 发布版本

示例:

close: #1, #3
feat: 添加xx功能
docs: update install info

如何使用

1. 创建 access tokens

https://github.com/settings/tokens需要在 .env 里配置

2. 创建 webhook

https://github.com/用户名/项目名/settings/hooks/new

  • Payload URL: www.example.com:8000
  • Content type: application/json
  • trigger: Send me everything.
  • Secret: xxx (需要在 .env 里配置

3. 开发运行

npm install
cp env .env
vim .env
npm start

4. 部署

本项目使用 pm2 进行服务管理,发布前请先全局安装 pm2

npm install pm2 -g
npm run deploy

后台启动该服务后,可以通过 pm2 ls 来查看服务名称为 github-bot 的运行状态。具体 pm2 使用,请访问:https://github.com/Unitech/pm2

5. 日志系统说明

本系统 logger 服务基于 log4js。 在根目录的 .env 文件中有个参数 LOG_TYPE 默认为 console,参数值说明:

console - 通过 console 输出log。
file - 将所有相关log输出到更根目录的 `log` 文件夹中。

contributors

用户贡献指南

Liscense

MIT

More Repositories

1

learn-nginx

Nginx 入门指南
Shell
858
star
2

mdjs

一个纯洁的md文档在线浏览
JavaScript
45
star
3

web-oauth-app

第三方登录服务 Web OAuth 示例
JavaScript
35
star
4

nginx-conf

我服务器的nginx配置, 包括https、反向代理、各站点配置、日志切割
Shell
29
star
5

DevOps

我的 DevOps 学习历程
JavaScript
19
star
6

node-combo

一个nodejs的静态cmd合并
JavaScript
18
star
7

xpath

xpath路径查看工具
JavaScript
18
star
8

demo

常用的一些东西和测试
JavaScript
17
star
9

hexo-theme-mip

Hexo MIP 模板
CSS
15
star
10

learn-vue2

学习 Vue.js 2.x 在项目中的应用
JavaScript
11
star
11

blog

前端小武的博客
JavaScript
11
star
12

key-cache

Storing data in the form of key into the file
JavaScript
9
star
13

log

前端日志研究
JavaScript
9
star
14

ShadowsocksX

Shadowsocks 白名单配置
8
star
15

hexo-generator-mip

统一处理 Hexo 模板中的 MIP 标签
JavaScript
7
star
16

web-sso-app

Web SSO 单点登录示例
HTML
7
star
17

command.blog

chrome浏览器命令行的博客
JavaScript
7
star
18

webpack-jssdk-demo

一个 webpack 打包 JSSDK 的示例
JavaScript
6
star
19

apijs

很纯洁的api数据模拟
JavaScript
5
star
20

mip-parse-html

解析 HTML 代码为 MIP-HTML
JavaScript
5
star
21

test-ajax

一个本地模拟接口
JavaScript
5
star
22

urlpath

url路径解析
JavaScript
4
star
23

learn-mip

学习百度MIP, 包括: 组件使用、在线预览、规范检查、错误提示等
HTML
4
star
24

sublime-config

我的sublime配置
3
star
25

hexo-mip-push

为 Hexo MIP 主题自动推送到站长平台
JavaScript
2
star
26

hexo-theme-mip-demo

Hexo MIP 主题的 demo
HTML
2
star
27

echo.xuexb.com

学习nginx echo module写的demo
HTML
2
star
28

mip-cache

NodeJS 清理 MIP-Cache
JavaScript
2
star
29

copy

基于jQuery的flash复制插件
ActionScript
1
star
30

cache.xuexb.com

前端小武博客缓存管理
HTML
1
star
31

vue-shopping

学习vue
JavaScript
1
star
32

think-compress-html

think压缩html
JavaScript
1
star
33

OpenBrowser

在sublime里打开浏览器
JavaScript
1
star
34

my.js

我的js
JavaScript
1
star
35

learn-shell

学习shell记录
1
star
36

fs-grep

Contents of the file grep
JavaScript
1
star
37

docker-centos7-puppeteer

支持 Node.js + Yarn + Puppeteer 的 CentOS7 环境
Dockerfile
1
star
38

hexo-generator-amp

统一处理 Hexo 模板中的 AMP 规范
1
star
39

docker-centos7-ifconfig

用于测试发布的第一个镜像,虽说代码就几行,但这也表示我要研究 Docker 了。
Dockerfile
1
star
40

mip-push

使用nodejs推送MIP数据到百度站长平台
JavaScript
1
star
41

check-version

Inspection Service version
JavaScript
1
star
42

hexo-mip-css

在 hexo 主题中处理 MIP 的 css
JavaScript
1
star
43

mip-snippets

Visual Studio Code MIP HTML Snippets
1
star
44

parse.mip.xuexb.com

HTML 转 MIP-HTML 在线工具
HTML
1
star
45

dyups-actions

dyups GitHub Actions
1
star
46

node-request-regexp

一个正则请求过滤器
JavaScript
1
star
47

attr-event-action

HTML 元素事件属性驱动
JavaScript
1
star