Автоматическое выполнение запросов на получение доступа к репозиторию 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"}'
Дополнительные примеры см. В документации здесь.