Trigger a GitHub Action ketika repositori lain membuat rilis baru

9

Saya mencoba membangun alur kerja GitHub yang akan dipicu ketika repositori lain membuat rilis baru.

Dalam dokumentasi, ada paragraf: di on.event_name.typesmana event_nameakan release.

Pertanyaannya adalah: Apakah ada cara untuk merujuk ke releaseacara repositori lain?

PierDipi
sumber
1
Saya tidak percaya begitu. Anda membutuhkan akses ke repo yang menciptakan rilis.
osowskit

Jawaban:

7

Apakah ada cara untuk merujuk ke acara rilis repositori lain?

Cukup yakin fitur ini tidak ada.

Jika Anda memiliki akses ke repositori yang membuat rilis maka Anda bisa memanggil acara webhook untuk memicu on: repository_dispatchalur kerja agar berjalan di repositori lain. tindakan repositori-pengiriman dapat membantu dalam kasus ini.

Jika Anda tidak memiliki akses ke repositori yang membuat rilis (yang saya asumsikan demikian di sini) maka ini akan menjadi saran saya. Pertama, buat alur kerja berikut yang secara berkala memeriksa tag versi rilis repositori yang ingin Anda lacak. Jika berbeda dari versi rilis yang saat ini Anda simpan di repositori Anda maka versi baru akan dikomit.

Perhatikan bahwa Anda harus menyiapkan file tujuan terlebih dahulu (mis. Versi rilis / sombong-ui-latest.txt) agar pemeriksaan file yang dimodifikasi berfungsi. Selanjutnya, Anda harus menggunakan repotoken yang dicakup bukan default GITHUB_TOKEN. Untuk detail lebih lanjut tentang itu, lihat Push to origin from action 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 '[email protected]'
          git commit -am "New release version"
          git push

Kemudian Anda bisa membuat alur kerja kedua yang hanya berjalan ketika melihat ada perubahan pada direktori release-versions.

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

Dalam alur kerja ini, Anda dapat menggunakan versi yang disimpan untuk mengambil aset yang Anda butuhkan dan melakukan pemrosesan apa pun yang Anda perlukan.

peterevans
sumber
1
Sedihnya kau mengkonfirmasi dugaanku. Selain itu, terima kasih telah berbagi pendekatan Anda.
PierDipi