如何自动关闭 GitLab 中的陈旧问题?

How can I automatically close stale issues in GitLab?

是否有开箱即用的功能来自动关闭在特定时间段内没有任何 activity 的问题,例如4 周?

如果没有,针对我所在小组的问题实施此方法的最佳方式是什么?

我不熟悉此类选项,但您可以查看问题列表并按创建或更新排序。

它本身不存在,但您可以准备一个脚本 运行 到 cronjob 或类似工具中,这样您就可以定期清除这些问题。该脚本可以使用 GitLab Issue API,并检查问题日期以确定是否关闭特定问题。 API 具有您使用所描述的逻辑制作此脚本所需的所有工具。

此解决方案使用 python-gitlab 包。它获取所有组问题,为那些不活跃的问题添加评论并关闭它们。

唯一的先决条件是

  • 获取 PRIVATE_TOKEN 并将其添加到您的环境中
  • 找出您的组 ID 并将其添加到下方
import datetime
import os

import gitlab


stale_before = datetime.date.today() - datetime.timedelta(days=28)

gl = gitlab.Gitlab(
    url="https://gitlab.example.com", private_token=os.environ["PRIVATE_TOKEN"]
)

group = gl.groups.get(123)  # your group ID
issues = group.issues.list(all=True, state="opened")

for issue in issues:
    updated_at = datetime.datetime.fromisoformat(issue.updated_at).date()
    if updated_at < stale_before:
        print(f"Closing issue #{issue.iid} (last activity on {updated_at}).")
        issue.notes.create({"body": "Closing for inactivity."})
        issue.state_event = "close"
        issue.save()