跳至主要内容

关闭不活跃的问题

您可以使用 GitHub Actions 对一段时间内处于不活跃状态的问题进行评论或关闭。

简介

本教程演示如何使用 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 的值以指示您希望此工作流何时运行。在上面的示例中,工作流将在每天 UTC 时间 1:30 运行。有关计划工作流的更多信息,请参阅“触发工作流的事件”。
    • 更改 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 参数(例如,每天 UTC 时间 1:30),您的工作流将查找在指定时间段内处于不活跃状态的问题,并添加指定的评论和标签。此外,如果在指定时间段内没有其他活动,您的工作流将关闭任何先前已标记的问题。

注意

在 GitHub Actions 工作流运行负载过高期间,schedule 事件可能会延迟。高负载时间包括每小时的开始。如果负载足够高,则可能会丢弃一些排队的作业。要降低延迟的可能性,请将工作流安排在每小时的不同时间运行。

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

此工作流每次最多只会标记和/或关闭 30 个问题,以避免超出速率限制。您可以使用 operations-per-run 设置对其进行配置。有关更多信息,请参阅 actions/stale 操作文档

后续步骤

  • 要了解有关使用 actions/stale 操作可以执行的其他操作的更多信息,例如关闭不活跃的拉取请求、忽略具有某些标签或里程碑的问题,或仅检查具有某些标签的问题,请参阅 actions/stale 操作文档
  • 搜索 GitHub 以查找使用此操作的工作流示例。