別のリポジトリが新しいリリースを作成したときにトリガーされるGitHubワークフローを構築しようとしています。
ドキュメントには、次の段落があります: on.event_name.types
ここでevent_name
はrelease
になります。
問題は、別のリポジトリのrelease
イベントを参照する方法はありますか?
別のリポジトリのリリースイベントを参照する方法はありますか?
この機能が存在しないことをかなり確認してください。
リリースを作成するリポジトリにアクセスできる場合は、webhookイベントを呼び出して、on: repository_dispatch
ワークフローをトリガーし、別のリポジトリで実行できます。 repository-dispatch アクションは、この場合に役立ちます。
リリースを作成するリポジトリにアクセスできない場合(ここではそうだと思います)、これが私の提案です。まず、追跡するリポジトリのリリースバージョンタグを定期的にチェックする次のワークフローを作成します。現在リポジトリに保存しているリリースバージョンと異なる場合は、新しいバージョンがコミットされます。
変更されたファイルのチェックを機能させるには、まず宛先ファイル(たとえば、release-versions/swagger-ui-latest.txt)を準備する必要があることに注意してください。さらに、デフォルトのGITHUB_TOKEN
ではなく、repo
スコープトークンを使用する必要があります。その詳細については、 GitHubアクションからOriginへのプッシュ を参照してください。
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::$(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 'Your Name'
git config --global user.email '[email protected]'
git commit -am "New release version"
git Push
次に、ディレクトリrelease-versions
への変更を検出したときにのみ実行される2番目のワークフローを作成できます。
on:
Push:
paths:
- 'release-versions/*'
このワークフローでは、保存されたバージョンを使用して、必要なアセットをフェッチし、必要な処理をすべて実行できます。