在另一个存储库创建新版本时触发GitHub操作 [英] Trigger a GitHub Action when another repository creates a new release
本文介绍了在另一个存储库创建新版本时触发GitHub操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试构建一个GitHub工作流,该工作流将在其他存储库创建新版本时触发。
文档中有这样一段话:on.event_name.types
其中event_name
将是release
。
问题是:有没有办法引用其他存储库的release
事件?
推荐答案
有没有办法引用其他存储库的发布事件?
相当确定此功能不存在。
如果您有权访问创建版本的存储库,则可以调用WebHook事件来触发on: repository_dispatch
工作流在另一个存储库中运行。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@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
有任何更改时运行。
on:
push:
paths:
- 'release-versions/*'
在此工作流中,您可以使用保存的版本获取所需的资产并执行所需的任何处理。
这里是a similar example,它会发出一个拉取请求,而不是立即提交。
这篇关于在另一个存储库创建新版本时触发GitHub操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文