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

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

后续步骤