Skip to main content

关闭不活跃的议题

您可以使用 GitHub Actions 评论或关闭在一定时间内未活动的议题。

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

简介

本教程演示如何使用 actions/stale 操作来评论和关闭在一段时间内处于非活动状态的问题。 例如,如果某个议题 30 天内未活动,您可以添加评论以促使参与者采取行动。 然后,如果 14 天后没有其他活动发生,您可以关闭此议题。

在本教程中,你将首先创建一个使用 actions/stale 操作的工作流文件。 然后,您将自定义工作流以适应您的需要。

创建工作流程

  1. 选择要应用此项目管理工作流程的仓库。 您可以使用您有写入权限的现有仓库,或者创建一个新的仓库。 有关创建存储库的详细信息,请参阅“创建新仓库”。

  2. 在存储库中,创建一个名为 .github/workflows/YOUR_WORKFLOW.yml 的文件,将 YOUR_WORKFLOW 替换为你选择的名称。 这是一个工作流程文件。 有关在 GitHub 上创建新文件的详细信息,请参阅“创建新文件”。

  3. 将以下 YAML 内容复制到工作流程文件中。

    YAML
    name: Close inactive issues
    on:
      schedule:
        - cron: "30 1 * * *"
    
    jobs:
      close-issues:
        runs-on: ubuntu-latest
        permissions:
          issues: write
          pull-requests: write
        steps:
          - uses: actions/stale@v5
            with:
              days-before-issue-stale: 30
              days-before-issue-close: 14
              stale-issue-label: "stale"
              stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
              close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
              days-before-pr-stale: -1
              days-before-pr-close: -1
              repo-token: ${{ secrets.GITHUB_TOKEN }}
    
  4. 自定义工工作流程文件中的参数:

    • 更改 on.schedule 的值以指示你希望何时运行此工作流。 在上面的示例中,工作流将于每天 1:30 UTC 运行。 有关计划工作流的详细信息,请参阅“触发工作流的事件”。
    • days-before-issue-stale 的值更改为在 actions/stale 操作标记问题之前没有活动的天数。 如果你不希望此操作标记问题,请将此值设置为 -1
    • days-before-issue-close 的值更改为在 actions/stale 操作关闭问题之前没有活动的天数。 如果你不希望此操作关闭问题,请将此值设置为 -1
    • stale-issue-label 的值更改为要应用于在 days-before-issue-stale 指定的时间量内处于非活动状态的问题的标签。
    • stale-issue-message 的值更改为要添加到由 actions/stale 操作标记的问题的注释。
    • close-issue-message 的值更改为要添加到由 actions/stale 操作关闭的问题的注释。
  5. 将工作流程文件提交到仓库的默认分支。 有关详细信息,请参阅“创建新文件”。

预期结果

根据 schedule 参数(例如,每天 1:30 UTC),你的工作流将发现在指定时间段内处于非活动状态的问题,并将添加指定的注释和标签。 此外,如果在指定时间段内未发生其他活动,您的工作流程将关闭任何以前标记的议题。

**** 注意:schedule 事件在 GitHub Actions 工作流运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 如果负载足够高,可能会删除一些排队作业。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。

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

为了避免超过速率限制,此工作流程将一次只标记和/或关闭 30 个议题。 可以使用 operations-per-run 设置进行配置。 有关详细信息,请参阅 actions/stale 操作文档

后续步骤

  • 若要详细了解可以使用 actions/stale 操作执行的其他操作(例如关闭非活动拉取请求,忽略某些标签或里程碑的问题,或者仅检查某些标签的问题),请参阅 actions/stale 操作文档
  • 搜索 GitHub 以获取使用此操作的工作流示例。