web-dev-qa-db-ja.com

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

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

ドキュメントには、次の段落があります: on.event_name.types ここでevent_namereleaseになります。

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

8
PierDipi

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

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

リリースを作成するリポジトリにアクセスできる場合は、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/*'

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

6
peterevans