当另一个存储库创建新版本时触发 GitHub 操作

Trigger a GitHub Action when another repository creates a new release

我正在尝试构建一个 GitHub 工作流,该工作流将在另一个存储库创建新版本时触发。

在文档中,有一段:on.event_name.types 其中 event_name 将是 release

问题是:有没有办法引用另一个仓库的release事件?

Is there any way to refer to the release event of another repository?

非常确定此功能不存在。

如果您有权访问创建版本的存储库,则可以调用 Webhook 事件来触发 on: repository_dispatch 工作流到另一个存储库中的 运行。 repository-dispatch 在这种情况下,采取行动会有所帮助。

如果您无权访问创建版本的存储库(我假设是这种情况),那么这将是我的建议。首先,创建以下工作流程,定期检查要跟踪的存储库的发布版本标签。如果它与您当前保存在存储库中的发布版本不同,则将提交新版本。

请注意,您必须先准备目标文件(例如 release-versions/swagger-ui-latest.txt),修改后的文件检查才能生效。 此外,您必须使用 repo 范围标记而不是默认的 GITHUB_TOKEN。有关详细信息,请参阅

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

然后您可以创建第二个工作流程,当它看到目录 release-versions.

的任何更改时,该工作流程仅 运行s
on:
  push:
    paths:
      - 'release-versions/*'

在此工作流程中,您可以使用保存的版本来获取您需要的资产并进行任何需要的处理。

这里 a similar example 提出拉取请求而不是立即提交。