记录一下折腾 OBS (Open Build Service) 的经历

两天前我准备建立一个 OBS 软件仓库,目的是可以使用 apt 安装和升级自己开发的软件,相比于手动操作来说更方便一些。

我的需求是当我 push tag 到 Github 仓库时,能够触发 OBS 的自动构建与发布,这样就无需人工干预了。

我首先注册了一个账号,然后创建 repos 和 packages,接下来就是想办法实现自动化构建了。

经过一番研究,我发现了三个可能可行的方法:

  1. 通过 OBS Service 自动下载源码包并构建,然后使用 Github Workflow 通过 OBS HTTP API 触发这个 Service
  2. 通过 Webhook 触发 OBS Workflow 自动拉取源码并构建
  3. 通过 Github Workflow 自动构建源码包,然后使用 OBS HTTP API 上传源码包触发构建

由于官方文档不全,我折腾了一天也没能让前两种方法 work。

最后选择了第三种方法,也就是 ungoogled-chromium 使用的方法,使用 github workflow 构建源码包,然后使用 curl 上传到 OBS 触发自动构建。

由于我有多个项目,不想每个项目都写一个脚本,所以我又创建了一个 Github Action obs-upload 来上传源码包,然后在 Github Workflow 里使用这个 Action,这样就简化了一些工作。

具体的实现读者可自行查看源码,也可以直接使用这个 Action。