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

时间:2019-10-19 15:13:42

标签: github github-actions github-webhook

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

文档中有以下段落:on.event_name.types,其中event_name将是release

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

1 个答案:

答案 0 :(得分:4)

  

有什么方法可以引用另一个存储库的发布事件吗?

完全确定此功能不存在。

如果您有权访问创建发行版的存储库,则可以调用webhook事件来触发on: repository_dispatch工作流程以在另一个存储库中运行。

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

请注意,您必须先准备目标文件(例如release-versions / swagger-ui-latest.txt),以使修改后的文件生效。 此外,您必须使用repo范围内的令牌,而不是默认的GITHUB_TOKEN。有关更多信息,请参见Push to origin from GitHub action

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - 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::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Peter Evans'
          git config --global user.email 'peter-evans@users.noreply.github.com'
          git remote set-url origin https://x-access-token:${{ secrets.REPO_SCOPED_TOKEN }}@github.com/$GITHUB_REPOSITORY
          git checkout "${GITHUB_REF:11}"
          git commit -am "New release version"
          git push

然后,您可以创建第二个工作流,该工作流仅在看到对目录release-versions的任何更改时才运行。

on:
  push:
    paths:
      - 'release-versions/*'

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