两天前我准备建立一个 OBS 软件仓库,目的是可以使用 apt 安装和升级自己开发的软件,相比于手动操作来说更方便一些。
我的需求是当我 push tag 到 Github 仓库时,能够触发 OBS 的自动构建与发布,这样就无需人工干预了。
我首先注册了一个账号,然后创建 repos 和 packages,接下来就是想办法实现自动化构建了。
经过一番研究,我发现了三个可能可行的方法:
- 通过 OBS Service 自动下载源码包并构建,然后使用 Github Workflow 通过 OBS HTTP API 触发这个 Service
- 通过 Webhook 触发 OBS Workflow 自动拉取源码并构建
- 通过 Github Workflow 自动构建源码包,然后使用 OBS HTTP API 上传源码包触发构建
由于官方文档不全,我折腾了一天也没能让前两种方法 work。
最后选择了第三种方法,也就是 ungoogled-chromium 使用的方法,使用 github workflow 构建源码包,然后使用 curl 上传到 OBS 触发自动构建。
由于我有多个项目,不想每个项目都写一个脚本,所以我又创建了一个 Github Action obs-upload 来上传源码包,然后在 Github Workflow 里使用这个 Action,这样就简化了一些工作。
具体的实现读者可自行查看源码,也可以直接使用这个 Action。