Skip to main content

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

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

Примечание.

GitHub Enterprise Serverразмещенные в данный момент средства выполнения не поддерживаются в GitHub.

Введение

В этом руководстве показано, как 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, рабочий процесс закроет последнюю проблему с соответствующими метками.

Примечание.

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

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

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

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