Введение
В этом руководстве показано, как регулярно создавать проблему с помощью GitHub CLI. Например, вы можете создавать проблему каждую неделю и использовать ее в качестве повестки дня для собрания команды. Дополнительные сведения о GitHub CLIсм. в разделе Использование GitHub CLI в рабочих процессах.
В руководстве сначала создайте файл рабочего процесса, использующий GitHub CLI. Затем вы настроите рабочий процесс в соответствии с вашими потребностями.
Создание рабочего процесса
-
Выберите репозиторий, в котором вы хотите применить этот рабочий процесс управления проектами. Вы можете использовать существующий репозиторий, к которому у вас есть доступ для записи, или создать репозиторий. Дополнительные сведения о создании репозитория см. в разделе "Создание репозитория".
-
В репозитории создайте файл с именем
.github/workflows/YOUR_WORKFLOW.yml
, гдеYOUR_WORKFLOW
— это любое имя на ваш выбор. Это файл рабочего процесса. Дополнительные сведения о создании новых файлов на сайте GitHub см. в разделе "Создание новых файлов". -
Скопируйте следующее содержимое YAML в файл рабочего процесса.
YAML name: Weekly Team Sync on: schedule: - cron: 20 07 * * 1 jobs: create_issue: name: Create team sync issue runs-on: ubuntu-latest permissions: issues: write steps: - name: Create team sync issue run: | if [[ $CLOSE_PREVIOUS == true ]]; then previous_issue_number=$(gh issue list \ --label "$LABELS" \ --json number \ --jq '.[0].number') if [[ -n $previous_issue_number ]]; then gh issue close "$previous_issue_number" gh issue unpin "$previous_issue_number" fi fi new_issue_url=$(gh issue create \ --title "$TITLE" \ --assignee "$ASSIGNEES" \ --label "$LABELS" \ --body "$BODY") if [[ $PINNED == true ]]; then gh issue pin "$new_issue_url" fi env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} TITLE: Team sync ASSIGNEES: monalisa,doctocat,hubot LABELS: weekly sync,docs-team BODY: | ### Agenda - [ ] Start the recording - [ ] Check-ins - [ ] Discussion points - [ ] Post the recording ### Discussion Points Add things to discuss below - [Work this week](https://github.com/orgs/github/projects/3) PINNED: false CLOSE_PREVIOUS: false
name: Weekly Team Sync on: schedule: - cron: 20 07 * * 1 jobs: create_issue: name: Create team sync issue runs-on: ubuntu-latest permissions: issues: write steps: - name: Create team sync issue run: | if [[ $CLOSE_PREVIOUS == true ]]; then previous_issue_number=$(gh issue list \ --label "$LABELS" \ --json number \ --jq '.[0].number') if [[ -n $previous_issue_number ]]; then gh issue close "$previous_issue_number" gh issue unpin "$previous_issue_number" fi fi new_issue_url=$(gh issue create \ --title "$TITLE" \ --assignee "$ASSIGNEES" \ --label "$LABELS" \ --body "$BODY") if [[ $PINNED == true ]]; then gh issue pin "$new_issue_url" fi env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} TITLE: Team sync ASSIGNEES: monalisa,doctocat,hubot LABELS: weekly sync,docs-team BODY: | ### Agenda - [ ] Start the recording - [ ] Check-ins - [ ] Discussion points - [ ] Post the recording ### Discussion Points Add things to discuss below - [Work this week](https://github.com/orgs/github/projects/3) PINNED: false CLOSE_PREVIOUS: false
-
Настройте параметры в файле рабочего процесса.
- Измените значение для
on.schedule
, чтобы определить время выполнения рабочего процесса. В приведенном выше примере рабочий процесс будет запускаться каждый день в 7:20 (в формате UTC). Дополнительные сведения о запланированных рабочих процессах см. в разделе События, инициирующие рабочие процессы. - Измените значение
ASSIGNEES
на список пользователей GitHub, которых вы хотите назначить проблеме. - В качестве значения для
LABELS
укажите список меток, которые вы хотите применить к проблеме. - Измените значение
TITLE
на желаемый заголовок проблемы. - Измените значение
BODY
на желаемый текст проблемы. С помощью символа|
можно использовать для этого параметра многострочное значение. - Если вы хотите закрепить эту проблему в репозитории, задайте для
PINNED
значениеtrue
. Дополнительные сведения о закрепленных проблемах см. в разделе Закрепление проблемы в репозитории. - Если вы хотите закрывать предыдущую проблему, созданную этим рабочим процессом, при каждом создании новой проблемы, задайте для
CLOSE_PREVIOUS
значениеtrue
. Рабочий процесс закроет последнюю проблему с метками, определенными в полеlabels
. Чтобы случайно не закрыть не ту проблему, используйте уникальную метку или сочетание меток.
- Измените значение для
-
Зафиксируйте файл рабочего процесса в ветви по умолчанию вашего репозитория. Дополнительные сведения см. в разделе Создание новых файлов.
Ожидаемые результаты
На основе параметра schedule
(например, каждый понедельник в 7:20 UTC) рабочий процесс будет создавать новую проблему с назначенными участниками, метками, заголовком и текстом, которые вы указали. Если для PINNED
задано значение true
, рабочий процесс закрепит проблему в репозитории. Если для CLOSE_PREVIOUS
задано значение true, рабочий процесс закроет последнюю проблему с соответствующими метками.
Note
Событие schedule
может быть отложено в периоды высокой нагрузки рабочих процессов GitHub Actions. К периодам высокой загрузки относится начало каждого часа. Если загрузка достаточно высока, некоторые задания в очереди могут быть удалены. Чтобы уменьшить вероятность задержки, запланируйте выполнение рабочего процесса в другое время часа.
Чтобы периодически отслеживать выполнение рабочего процесса, можно просматривать историю его выполнений. Дополнительные сведения см. в разделе Просмотр журнала выполнения рабочего процесса.
Следующие шаги
- Дополнительные сведения о дополнительных действиях, которые можно сделать с помощью GitHub CLI, например с помощью шаблона проблемы, см. в
gh issue create
документации. - Выполните поиск GitHub Marketplace для действий, связанных с запланированными проблемами.