Skip to main content

Планирование создания проблем

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

Введение

В этом руководстве показано, как регулярно создавать проблему с помощью GitHub CLI. Например, вы можете создавать проблему каждую неделю и использовать ее в качестве повестки дня для собрания команды. Дополнительные сведения о GitHub CLIсм. в разделе Использование GitHub CLI в рабочих процессах.

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

Создание рабочего процесса

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

  2. В репозитории создайте файл с именем .github/workflows/YOUR_WORKFLOW.yml, где YOUR_WORKFLOW — это любое имя на ваш выбор. Это файл рабочего процесса. Дополнительные сведения о создании новых файлов на сайте GitHub см. в разделе "Создание новых файлов".

  3. Скопируйте следующее содержимое 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
    
  4. Настройте параметры в файле рабочего процесса.

    • Измените значение для on.schedule, чтобы определить время выполнения рабочего процесса. В приведенном выше примере рабочий процесс будет запускаться каждый день в 7:20 (в формате UTC). Дополнительные сведения о запланированных рабочих процессах см. в разделе События, инициирующие рабочие процессы.
    • Измените значение ASSIGNEES на список пользователей GitHub, которых вы хотите назначить проблеме.
    • В качестве значения для LABELS укажите список меток, которые вы хотите применить к проблеме.
    • Измените значение TITLE на желаемый заголовок проблемы.
    • Измените значение BODY на желаемый текст проблемы. С помощью символа | можно использовать для этого параметра многострочное значение.
    • Если вы хотите закрепить эту проблему в репозитории, задайте для PINNED значение true. Дополнительные сведения о закрепленных проблемах см. в разделе Закрепление проблемы в репозитории.
    • Если вы хотите закрывать предыдущую проблему, созданную этим рабочим процессом, при каждом создании новой проблемы, задайте для CLOSE_PREVIOUS значение true. Рабочий процесс закроет последнюю проблему с метками, определенными в поле labels. Чтобы случайно не закрыть не ту проблему, используйте уникальную метку или сочетание меток.
  5. Зафиксируйте файл рабочего процесса в ветви по умолчанию вашего репозитория. Дополнительные сведения см. в разделе Создание новых файлов.

Ожидаемые результаты

На основе параметра schedule (например, каждый понедельник в 7:20 UTC) рабочий процесс будет создавать новую проблему с назначенными участниками, метками, заголовком и текстом, которые вы указали. Если для PINNED задано значение true, рабочий процесс закрепит проблему в репозитории. Если для CLOSE_PREVIOUS задано значение true, рабочий процесс закроет последнюю проблему с соответствующими метками.

Note

Событие schedule может быть отложено в периоды высокой нагрузки рабочих процессов GitHub Actions. К периодам высокой загрузки относится начало каждого часа. Если загрузка достаточно высока, некоторые задания в очереди могут быть удалены. Чтобы уменьшить вероятность задержки, запланируйте выполнение рабочего процесса в другое время часа.

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

Следующие шаги

  • Дополнительные сведения о дополнительных действиях, которые можно сделать с помощью GitHub CLI, например с помощью шаблона проблемы, см. в gh issue create документации.
  • Выполните поиск GitHub Marketplace для действий, связанных с запланированными проблемами.