跳至主要内容

安排问题创建

您可以使用 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的值以决定你希望此工作流何时运行。在上面的示例中,工作流将在每个星期一UTC时间7:20运行。关于计划工作流的更多信息,请参见“触发工作流的事件”。
    • ASSIGNEES的值更改为你想要分配给该问题的GitHub用户名列表。
    • LABELS的值更改为你想要应用于该问题的标签列表。
    • TITLE的值更改为你希望该问题具有的标题。
    • BODY的值更改为你想要在问题正文中使用的文本。|字符允许你为此参数使用多行值。
    • 如果你想将此问题固定在你的代码库中,请将PINNED设置为true。关于固定问题的更多信息,请参见“将问题固定到你的代码库”。
    • 如果你希望每次创建新问题时都关闭此工作流生成的先前问题,请将CLOSE_PREVIOUS设置为true。工作流将关闭最近具有labels字段中定义的标签的问题。为避免关闭错误的问题,请使用唯一的标签或标签组合。
  5. 将你的工作流文件提交到你的代码库的默认分支。更多信息,请参见“创建新文件”。

预期结果

根据schedule参数(例如,每周一UTC时间7:20),你的工作流将创建一个新的问题,其中包含你指定的受让人、标签、标题和正文。如果你将PINNED设置为true,工作流将把该问题固定到你的代码库。如果你将CLOSE_PREVIOUS设置为true,工作流将关闭最近具有匹配标签的问题。

注意

在GitHub Actions工作流运行的高负载期间,schedule事件可能会延迟。高负载时间包括每小时的开始时间。如果负载足够高,一些排队的作业可能会被丢弃。为了减少延迟的可能性,请安排你的工作流在不同的时间运行。

你可以查看工作流运行的历史记录以查看此工作流定期运行。更多信息,请参见“查看工作流运行历史记录”。

后续步骤