Запустить действие GitHub, когда другой репозиторий создает новый выпуск

9

Я пытаюсь создать рабочий процесс GitHub, который будет запущен, когда другой репозиторий создаст новую версию.

В документации есть абзац: on.event_name.typesгде event_nameбудет release.

Вопрос заключается в следующем: есть ли способ сослаться на releaseсобытие другого хранилища?

PierDipi
источник
1
Я не верю в это. Вам потребуется доступ к репо, который создает релиз.
osowskit

Ответы:

7

Есть ли способ сослаться на событие выпуска другого репозитория?

Уверен, что эта функция не существует.

Если у вас есть доступ к хранилищу, создающему выпуск, вы можете вызвать событие webhook, чтобы запустить on: repository_dispatchрабочий процесс в другом хранилище. В этом случае может помочь действие репозитория .

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

Обратите внимание, что сначала вы должны подготовить файл назначения (например, release-version / swagger-ui-latest.txt), чтобы проверка измененных файлов работала. Кроме того, вы должны использовать repoтокен с областью действия вместо значения по умолчанию GITHUB_TOKEN. Для получения более подробной информации об этом см. Push to origin from GitHub action

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/*'

В этом рабочем процессе вы можете использовать сохраненную версию, чтобы выбрать нужные вам ресурсы и выполнить любую необходимую вам обработку.

peterevans
источник
1
К сожалению, вы подтвердили мою догадку. Кроме того, спасибо, что поделились своим подходом.
PierDipi