別のリポジトリが新しいリリースを作成するときにGitHubアクションをトリガーする


9

別のリポジトリが新しいリリースを作成したときにトリガーされるGitHubワークフローを構築しようとしています。

:ドキュメントで、段落があるでしょうが。on.event_name.typesevent_namerelease

問題はrelease、別のリポジトリのイベントを参照する方法はありますか?


1
私はそうは思いません。リリースを作成するリポジトリにアクセスする必要があります。
osowskit

回答:


7

別のリポジトリのリリースイベントを参照する方法はありますか?

この機能が存在しないことをかなり確認してください。

リリースを作成するリポジトリにアクセスできる場合は、Webhookイベントを呼び出して、on: repository_dispatchワークフローをトリガーして別のリポジトリで実行できます。この場合、repository-dispatchアクションが役立ちます。

リリースを作成するリポジトリにアクセスできない場合(ここではそうだと思います)、これが私の提案です。まず、追跡するリポジトリのリリースバージョンタグを定期的にチェックする次のワークフローを作成します。現在リポジトリに保存しているリリースバージョンと異なる場合は、新しいバージョンがコミットされます。

変更されたファイルのチェックを機能させるには、最初に宛先ファイル(たとえば、release-versions / swagger-ui-latest.txt)を準備する必要があることに注意してください。さらに、repoデフォルトの代わりにスコープ付きトークンを使用する必要がありますGITHUB_TOKEN。詳細については、GitHubアクションから送信元にプッシュするをご覧ください。

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 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

次に、ディレクトリへの変更を検出したときにのみ実行される2番目のワークフローを作成できますrelease-versions

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

このワークフローでは、保存されたバージョンを使用して、必要なアセットをフェッチし、必要な処理をすべて実行できます。


1
悲しいことに、あなたは私の直感を確認しました。その上、あなたのアプローチを共有してくれてありがとう。
PierDipi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.