# 自动化更新规则仓库
# 前言
机场的订阅一天天变,如果每次更新我们都要打开电脑运行一次命令感觉太不科学了,所以需要引入自动化的管理。
我给出的自动化管理方案依赖 GitLab。首先,使用 Git 来管理你的规则仓库是本身就百利而无一害,比如方便回溯历史修改;再而,GitLab 提供了强大的 CI 系统,免费额度能够满足绝大多数需要;最后,GitLab 我比较熟悉(哈哈。为什么不用 GitHub,因为 Actions 功能还没有向所有人开放,第三方服务针对私有仓库几乎都要收费。
# 准备
- 注册一个 GitLab.com (opens new window) 账号
- 新建一个私有的空仓库(什么都不要提交,也不要创建初始文件)
- 电脑上安装好 Git
# 开始
这篇教程会以开篇时创建的那个初始仓库为例。为了能够下载到产物文件,你也需要开启 OSS 上传功能。
在目录里新建一个名为 .gitignore
的文件,内容如下:
.env
node_modules
dist
.DS_Store
2
3
4
TIP
我们会让 Git 忽略生成规则的目录,因为通常 Git 仓库只保存源码而不保存产物或中间产物。我也建议你这么做。
在 Terminal 中打开仓库目录,运行命令:
git init
新建一个名为 .gitlab-ci.yml
的文件,内容如下:
image: node:10-stretch
before_script:
- 'npm install --production'
stages:
- build
build:
stage: build
tags:
- docker
artifacts:
paths:
- dist/
only:
- web # 能够在网页上触发
- triggers # 能够通过 API 触发
- schedules # 能够定时触发
script:
- npm run update
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
接下来就是一些常规操作。熟悉一下 Git 操作,然后把代码提交到 remote。
# 配置 GitLab
当目录内存在 .gitlab-ci.yml
,GitLab 便会自动打开 CI 功能。这里只需要配置一个自动化动作。
在 GitLab 项目页面,找到 Schedules。
点击 New schedule 添加一个新项目。
保存即可。你的配置会在每天凌晨 4 点自动更新。你也可以配置自己的 Cron 规则,让它在任何时候自动触发更新。
注意
如果你使用 Surgio 来生成 Surge 使用的 Vmess 订阅,并且开启了 external
模式,就不能使用自动化管理。因为 Surgio 会在本地生成额外的文件,这对 Surge 来说是必须的。
# 其他的触发方法
前面提到了,除了自动触发,CI 还支持在网页上触发或者接口触发。
# 网页触发
在左侧列表里找到 Pipelines,然后点击 Run Pipeline。接下来什么都不用做,直接点击 Run Pipeline 即可。通过这个渠道能够很方便地触发更新。
# 接口触发
假设我的仓库地址是 https://gitlab.com/user/example
。则打开仓库设置 https://gitlab.com/user/example/-/settings/ci_cd
。
找到 Pipeline triggers,点击右侧 Expand。输入名称后点击新建 Trigger。
TIP
TOKEN
即为上面一串长长的字符串REF_NAME
为master
使用例子中的调用方法进行调用,即可触发更新。你可以在「捷径」中配置一个 HTTP 请求操作,以后就能愉快地更新了。
# 注意事项
- 每一次本地修改都不要忘记提交到仓库
- 切记仓库必须为私有
← 自定义过滤器 快速搭建托管 API →