Thanks to visit codestin.com
Credit goes to docs.github.com

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

Примечание.

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

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

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

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