从外部仓库触发工作流程

时间:2020-04-28 21:21:38

标签: github-actions

我可以基于推送回购协议来触发工作流程

on:
  push

当有人推送到我没有推送访问权限的另一个公共存储库(例如phpmyadmin)时,是否可以触发工作流程?

3 个答案:

答案 0 :(得分:2)

我很确定答案是否定的,您不能以编程方式将一个存储库预订到另一个存储库的事件。

但是,您可以执行scheduled job(每天一次,或者如果需要,可以更频繁地运行)来检查是否有任何更新。您可以在存储库中存储最后一个已知的SHA,然后在操作检测到更新时通过PR或直接提交对其进行更新。

这类似于https://dependabot.com/之类的工具。

答案 1 :(得分:1)

您可以使用“ Repository_dispatch”触发器来触发任何工作流程。以下链接对使用很有帮助

 on:
        repository_dispatch:
            types: [start-example-workflow]

有了该有效负载,您可以将请求发布到https://api.github.com/repos/:owner/:repo/dispatches以触发工作流

Accept:  application/vnd.github.everest-preview+json
Content-Type: application/json
Authorization: Bearer {{personal_access_token}}

{
    "event_type": "my_event_type",
    "client_payload": {
        "example-key": "example-value"
    }
}

让我知道这是否对您有帮助。

答案 2 :(得分:0)

如果您无法访问两个存储库,这可能没有帮助,但由于我还没有找到任何其他解决方案,我还是将其发布了。

解决方案可以发生在推送或任何其他事件上,它使用这个 dispatch github action

name: Trigger PR in PMS on release
on: push

jobs:
  build:
    name: Dispatch an update
    steps:
      - uses: mvasigh/dispatch-action@main
        with:
          token: ${{ secrets.GH_TOKEN }}
          repo: from-repository
          event_type: update_event

然后从订阅的存储库中监听 event_type:

name: Update event
on:
  repository_dispatch:
    types: [update_event]

jobs:
  build:
    steps:
      - run: yarn
      ...