本文说明如何配置这个仓库,使自动更新、冒烟测试、GHCR 发布和 GitHub Release 能正常运行。
配置完成后,链路会是这样:
- Renovate 发现上游 release/tag 更新
- Renovate 更新
sources.lock.json renovate/**分支触发Upstream Smoke- 冒烟通过后 Renovate 把更新直接写入
main(默认不会开 PR) main提交触发Publish Image- 工作流把镜像推到 GHCR
- 工作流创建或更新这个仓库自己的 GitHub Release
完成前两步即可,后续步骤主要是原理说明。
默认使用官方 Renovate GitHub App,无需自托管。
操作步骤:
- 安装 Mend Renovate App
- 把这个仓库加入 Renovate 的安装范围
- 确认仓库根目录保留
renovate.json
官方文档:
在仓库 Settings -> Actions -> General 里确认:
- GitHub Actions 已启用
- 工作流允许运行
官方文档:
这套 workflow 已经在文件里显式声明了权限,无需多余步骤,此处给出各个权限的说明:
contents: write:用来创建 GitHub Releasepackages: write:用来发布 GHCR 镜像issues: write:用来在自动化异常时开 issue
官方文档:
这套发布默认发布 GHCR 公开镜像,不需要额外 PAT,直接使用 GITHUB_TOKEN
需要注意,当前 renovate.json 使用的是:
{
"automerge": true,
"automergeType": "branch"
}这意味着:
- Renovate 先建
renovate/**分支 - 冒烟测试通过后,Renovate 会直接把 commit 写入
main,原分支不会保留,也没有 PR - 如果测试失败,Renovate 才会保留分支/PR 给你看
- 如果打开了
main分支保护,因为 Renovate 无法写入main,这个工作流会失败
如果你想要每次更新都必须过 PR 才合并,可以把自动合并改成 PR 模式:
- 把
renovate.json里的automergeType改成pr - 在
main上启用 required status checks - 让 Github 自动 merge PR,而不是 branch automerge
默认不需要。
当前这套实现里:
- 发布 GHCR 用
GITHUB_TOKEN - 创建 GitHub Release 用
GITHUB_TOKEN - 自动开 issue 用
GITHUB_TOKEN - Renovate 用 GitHub App 自己的凭据
所以正常情况下,这个仓库不需要额外加 PAT。
这类会被归到 build-or-smoke-failure ,会静默失败,直到上游下一次更新,这个场景一般是由于上游前端/后端出现了 BREAKING CHANGE,导致冒烟测试没通过,所以等上游修复后再更新就好了。
这类会被归到 automation-error,比如:
- 锁文件格式坏了
- 上游 tag 找不到
- GHCR 登录失败
- 创建 release 失败
这时 workflow 会自动创建或更新一个 issue,标题类似:
[automation] Sub-Store image pipeline failure[automation] Sub-Store image publish failure
- 已安装 Renovate App
- 已启用 GitHub Actions
- 确认
main的分支保护策略和automergeType=branch不冲突 - 手动触发一次
Upstream Smoke - 手动触发一次
Publish Image