Запустить действие GitHub, когда другой репозиторий создает новый выпуск - PullRequest
1 голос
/ 19 октября 2019

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

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

Вопрос в том, можно ли сослаться на событие release другого хранилища?

1 Ответ

1 голос
/ 20 октября 2019

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

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

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

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

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

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - 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 'Peter Evans'
          git config --global user.email 'peter-evans@users.noreply.github.com'
          git remote set-url origin https://x-access-token:${{ secrets.REPO_SCOPED_TOKEN }}@github.com/$GITHUB_REPOSITORY
          git checkout "${GITHUB_REF:11}"
          git commit -am "New release version"
          git push

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

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

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

...