Skip to main content

计划议题的创建

您可以使用 GitHub Actions 定期为日常会议或季度审查等事项创建议题。

注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。

介绍

本教程将演示如何使用 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 工作流运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 如果负载足够高,可能会删除一些排队作业。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。

您可以查看工作流程运行的历史记录,以便定期查看此工作流程运行。 有关详细信息,请参阅“查看工作流程运行历史记录”。

后续步骤