Запустити GitHub Action, коли інший репозиторій створює новий випуск


9

Я намагаюся створити робочий процес GitHub, який буде запущений, коли інше сховище створить новий випуск.

У документації є абзац: on.event_name.typesде event_nameбуде release.

Питання полягає в тому, чи є спосіб посилатися на releaseподію іншого сховища?


1
Я не вірю в це. Вам знадобиться доступ до репо, що створює випуск.
osowskit

Відповіді:


7

Чи є спосіб звернутися до події випуску іншого сховища?

Досить впевнений, що ця функція не існує.

Якщо у вас є доступ до сховища, яке створює випуск, ви можете викликати подію webhook, щоб запустити on: repository_dispatchробочий процес для запуску в іншому сховищі. Дія з відправлення-сховища може допомогти у цьому випадку.

Якщо у вас немає доступу до сховища, яке створює випуск (я припускаю, що тут справа), то це буде моєю пропозицією. Спочатку створіть наступний робочий процес, який періодично перевіряє тег версії випуску сховища, яке ви хочете відстежувати. Якщо вона відрізняється від версії випуску, яку ви зберегли у своєму сховищі, то нова версія буде виконана.

Зауважте, що спочатку потрібно підготувати цільовий файл (наприклад, версії-релізи / 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

Тоді ви можете створити другий робочий процес, який запускається лише тоді, коли він побачить будь-які зміни в каталозі release-versions.

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

У цьому робочому процесі ви можете використовувати збережену версію, щоб отримати потрібні вам активи та зробити будь-яку обробку, яка вам потрібна.


1
На жаль, ти підтвердив мою думку. Крім того, дякую, що поділилися своїм підходом.
PierDipi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.