自动化涉及第 3 方回购的 GitHub 工作流程

Automatizing GitHub workflow that involves 3rd party repo

我有一个 GitHub 存储库 myRepo 可以扫描另一个存储库 theirRepo 的内容并将它们转换为 JSON 文件。细节并不是那么重要,只是 myRepo 使用 nodeJS 并将 theirRepo 作为子模块。许可这不是问题。

我想要实现的是,当 theirRepo 合并到 main 时,myRepo 神奇地 更新并构建新的文件。我想使用现有的基础设施,例如 GitHub 操作、Netlify 构建过程等

你会如何处理这个问题?

我不希望 神奇的 部分有详细的解决方案,而是在寻找一些指导,让我开始。

由于 GitHub Actions (AFAIK) 目前不允许根据其他存储库中的更改触发事件(除非您控制另一个存储库的工作流程),因此可能需要进行一些修改。

OtherRepo 中的文件更改

我不熟悉 Node,但是,根据项目文化,以下文件可能会在新的 release/main 分支更新期间发生变化:

  • package-lock.json
  • CHANGELOG.md(用于语义版本控制)

这是一个粗略的近似值,您可能还想识别可能随每个合并的 PR 更改的多个文件。

基于 Cron 的工作

运行 你的工作每隔 N hours/minutes 或另一个时间间隔检查变化。

使用缓存

运行 只有当另一个回购中的文件发生变化时,您才会采取行动,大致如下:

steps:
  - run: curl <path to file> -o output1
  - run: curl <path to file2> -o output2
  - name: Cache
    uses: actions/cache@v3
    id: cache
    with:
      key: ${{ hashFiles(”output1”, “output2”) }}
  - name: Update repo
    if: steps.cache.output.cache-hit != “true”
    run: <do your stuff>