我有两个存储库 A 和 B,都托管在 GitHub 上。
他们必须保持分开。我想在每次仓库 B 收到更新时重建仓库 A。它必须仅使用 GitHub Actions 才能工作。我希望存储库 B 保持无操作状态,即没有 CI/CD 附加到该存储库(我希望它只存储文件)。我在想也许我可以使用 git 子模块让它工作?存储库 B 将是存储库 A 中的子模块。是否可以在存储库 A 中构建 GH 操作,以检测存储库 B 中的更改并从那里拉取?
编辑: Repo A 是静态站点生成器(
nextjs
)我打算与公众分享。 Repo B 充满了用户自带的文本文件(org-roam
)。他们一起建立了一个个人维基网站。我希望最大限度地减少配置麻烦 - 这就是为什么我希望将所有 CI/CD 和代码封装在 Repo A 中,这样用户就可以分叉它,并使用他们的知识库存储库(repo B)即插即用它)。在两个存储库之间交织在一起的 GitHub Actions 似乎并不理想 - 这就是为什么我正在寻找更好的解决方案
感谢@GuiFalourd 和@riQQ,我能够将概念验证的存储库集放在一起
两个存储库共享相同的 GitHub 个人访问令牌。为了填补 blog.marcnuri.com 指南中的空白,这里是完成这项工作所需的最小权限集(假定两个存储库都是公共的,否则您需要
repo
权限:
每天更新一次似乎还可以。因此,depdendabot 可以成为一个解决方案:
.github/dependabot.yml
:
version: 2
updates:
- package-ecosystem: "gitsubmodule"
directory: "/"
schedule:
interval: daily
通过自动合并,这会进入:
name: Auto Merge
on: [pull_request_target,]
permissions:
contents: write
pull-requests: write
jobs:
automerge:
runs-on: ubuntu-latest
if: (github.actor == 'dependabot[bot]')
steps:
- name: Merge PR
run: gh pr merge --auto --squash "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GH_TOKEN_GH_PR_MERGE}}
用户需要创建秘密
GH_TOKEN_GH_PR_MERGE
。拥有一些具有“正确”权限的个人访问令牌。 (https://github.com/cli/cli/issues/8352#issuecomment-1850344748的讨论并没有完全说明哪些权利是正确的)。