Автоматическое выполнение запросов на получение доступа к репозиторию GitHub с помощью действий GitHub

У меня есть файл в репозитории GitHub, который требует периодического обновления с помощью команды.

Как часть рабочих процессов GitHub, я хочу, чтобы бот выполнял команду и проверял, создает ли он diff в репо, и если да, то автоматически делает запрос на извлечение данных в хранилище.

У меня есть подозрение, что рабочие процессы GitHub могут помочь мне сделать это, поскольку теперь GitHub позволяет людям запускать произвольные контейнеры ("Действия"), которые выполняют такие вещи, как сборки в репозитории. Я вижу некоторые официальные рабочие процессы автоматизации, которые позволяют вам "отмечать" и "комментировать" проблемы и т. Д. Здесь: https://github.com/actions/starter-workflows/tree/master/automation

Если бы я хотел выполнить произвольную команду и сделать пиар в хранилище, на какие действия GitHub я должен смотреть вместо того, чтобы заново изобретать свои собственные действия? Любые указатели приветствуются.

0 ответов

Я сделал действие GitHub, которое, я думаю, поможет вам в этом случае использования.https://github.com/peter-evans/create-pull-request

create-pull-requestдействие необходимо запускать вместе с другими действиями или шагами, которые изменяют или добавляют файлы в ваш репозиторий. Изменения будут автоматически зафиксированы в новой ветке, и будет создан запрос на перенос.

Вот пример, который устанавливает большинство основных входов.

on:
  repository_dispatch:
    types: [create-pull-request]
name: Create Pull Request
jobs:
  createPullRequest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Create report file
        run: date +%s > report.txt
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: Add report file
          committer: Peter Evans <peter-evans@users.noreply.github.com>
          body: |
            New report
            - Contains *today's* date
            - Auto-generated by [create-pull-request][1]

            [1]: https://github.com/peter-evans/create-pull-request
          title: '[Example] Add report file'
          labels: report, automated pr
          assignees: peter-evans
          reviewers: peter-evans
          milestone: 1
          branch: example-patches

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

on:
 schedule:
   - cron: '*/5 * * * *'

Кроме того, вы можете настроить запуск рабочего процесса через веб-перехватчик, как в примере выше.

on:
  repository_dispatch:
    types: [create-pull-request]

Чтобы запустить рабочий процесс, вызовите следующее. [username] это имя пользователя GitHub. [token] это repo ограниченный токен. [repository] - это имя репозитория, в котором находится рабочий процесс.

curl -XPOST -u "[username]:[token]" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/[username]/[repository]/dispatches --data '{"event_type": "create-pull-request"}'

Дополнительные примеры см. В документации здесь.

Другие вопросы по тегам