简介
本教程演示如何使用 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
的值以决定你希望此工作流何时运行。在上面的示例中,工作流将在每个星期一UTC时间7:20运行。关于计划工作流的更多信息,请参见“触发工作流的事件”。 - 将
ASSIGNEES
的值更改为你想要分配给该问题的GitHub用户名列表。 - 将
LABELS
的值更改为你想要应用于该问题的标签列表。 - 将
TITLE
的值更改为你希望该问题具有的标题。 - 将
BODY
的值更改为你想要在问题正文中使用的文本。|
字符允许你为此参数使用多行值。 - 如果你想将此问题固定在你的代码库中,请将
PINNED
设置为true
。关于固定问题的更多信息,请参见“将问题固定到你的代码库”。 - 如果你希望每次创建新问题时都关闭此工作流生成的先前问题,请将
CLOSE_PREVIOUS
设置为true
。工作流将关闭最近具有labels
字段中定义的标签的问题。为避免关闭错误的问题,请使用唯一的标签或标签组合。
- 更改
-
将你的工作流文件提交到你的代码库的默认分支。更多信息,请参见“创建新文件”。
预期结果
根据schedule
参数(例如,每周一UTC时间7:20),你的工作流将创建一个新的问题,其中包含你指定的受让人、标签、标题和正文。如果你将PINNED
设置为true
,工作流将把该问题固定到你的代码库。如果你将CLOSE_PREVIOUS
设置为true,工作流将关闭最近具有匹配标签的问题。
注意
在GitHub Actions工作流运行的高负载期间,schedule
事件可能会延迟。高负载时间包括每小时的开始时间。如果负载足够高,一些排队的作业可能会被丢弃。为了减少延迟的可能性,请安排你的工作流在不同的时间运行。
你可以查看工作流运行的历史记录以查看此工作流定期运行。更多信息,请参见“查看工作流运行历史记录”。
后续步骤
- 要了解有关使用GitHub CLI可以执行的其他操作的更多信息(例如使用问题模板),请参阅
gh issue create
文档。 - 搜索GitHub Marketplace,查找与计划问题相关的操作。