注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。
介绍
本教程将演示如何使用 GitHub CLI 定期创建问题。 例如,您可以每周创建一个议题,用作团队会议的议程。 有关 GitHub CLI 的详细信息,请参阅“在工作流中使用 GitHub CLI”。
在本教程中,首先需要创建一个使用 GitHub CLI 的工作流文件。 然后,您将自定义工作流以适应您的需要。
创建工作流程
-
选择要应用此项目管理工作流程的仓库。 您可以使用您有写入权限的现有仓库,或者创建一个新的仓库。 有关创建存储库的详细信息,请参阅“创建新仓库”。
-
在存储库中,创建一个名为
.github/workflows/YOUR_WORKFLOW.yml
的文件,将YOUR_WORKFLOW
替换为你选择的名称。 这是一个工作流程文件。 有关在 GitHub 上创建新文件的详细信息,请参阅“创建新文件”。 -
将以下 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
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
-
自定义工工作流程文件中的参数:
- 更改
on.schedule
的值以指示你希望何时运行此工作流。 在上面的示例中,工作流将于每周一 7:20 UTC 运行。 有关计划工作流的详细信息,请参阅“触发工作流的事件”。 - 将
ASSIGNEES
的值更改为你想要分配给此议题的 GitHub 用户名。 - 将
LABELS
的值更改为你想要应用于此议题的标签列表。 - 将
TITLE
的值更改为你希望该议题拥有的标题。 - 将
BODY
的值更改为你想要用于议题正文的文本。 使用|
字符可以为此参数使用多行值。 - 如果想要将这个议题固定在存储库中,请将
PINNED
设置为true
。 有关固定问题的详细信息,请参阅“将议题固定到仓库”。 - 如果你想在每次新建议题时关闭此工作流生成的上一个议题,请将
CLOSE_PREVIOUS
设置为true
。 工作流将关闭具有labels
字段中定义的标签的最新议题。 为避免关闭错误的议题,请使用独特的标签或标签组合。
- 更改
-
将工作流程文件提交到仓库的默认分支。 有关详细信息,请参阅“创建新文件”。
预期结果
根据 schedule
参数(例如,每周一 7:20 UTC),你的工作流将使用你指定的受理人、标签、标题和正文创建新议题。 如果将 PINNED
设置为 true
,工作流会将此议题固定到存储库。 如果将 CLOSE_PREVIOUS
设置为 true,工作流将关闭具有匹配标签的最新议题。
**** 注意:schedule
事件在 GitHub Actions 工作流运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 如果负载足够高,可能会删除一些排队作业。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。
您可以查看工作流程运行的历史记录,以便定期查看此工作流程运行。 有关详细信息,请参阅“查看工作流程运行历史记录”。
后续步骤
- 要详细了解使用 GitHub CLI(例如使用问题模板)可以执行哪些其他的操作,请参阅
gh issue create
文档。 - 在 GitHub Marketplace 中搜索与计划问题相关的操作。