Tune roadmap reminders to 7-day window with updated title and labels
This commit is contained in:
parent
199d574d66
commit
ab6ad85db7
3 changed files with 37 additions and 7 deletions
5
.github/workflows/roadmap-reminder.yml
vendored
5
.github/workflows/roadmap-reminder.yml
vendored
|
|
@ -24,5 +24,6 @@ jobs:
|
||||||
--repo OliverGiertz/StaySense \
|
--repo OliverGiertz/StaySense \
|
||||||
--project-owner OliverGiertz \
|
--project-owner OliverGiertz \
|
||||||
--project-number 4 \
|
--project-number 4 \
|
||||||
--days-upcoming 14 \
|
--days-upcoming 7 \
|
||||||
--upsert-issue-title "[Roadmap] Weekly Health Report"
|
--upsert-issue-title "[Roadmap] Weekly Deadlines (7 Tage)" \
|
||||||
|
--labels "roadmap-report,roadmap,ops"
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ python3 scripts/roadmap_reminder_report.py \
|
||||||
--repo OliverGiertz/StaySense \
|
--repo OliverGiertz/StaySense \
|
||||||
--project-owner OliverGiertz \
|
--project-owner OliverGiertz \
|
||||||
--project-number 4 \
|
--project-number 4 \
|
||||||
--days-upcoming 14 \
|
--days-upcoming 7 \
|
||||||
--dry-run
|
--dry-run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -72,7 +72,9 @@ python3 scripts/roadmap_reminder_report.py \
|
||||||
--repo OliverGiertz/StaySense \
|
--repo OliverGiertz/StaySense \
|
||||||
--project-owner OliverGiertz \
|
--project-owner OliverGiertz \
|
||||||
--project-number 4 \
|
--project-number 4 \
|
||||||
--days-upcoming 14
|
--days-upcoming 7 \
|
||||||
|
--upsert-issue-title "[Roadmap] Weekly Deadlines (7 Tage)" \
|
||||||
|
--labels "roadmap-report,roadmap,ops"
|
||||||
```
|
```
|
||||||
|
|
||||||
GitHub Actions Secret:
|
GitHub Actions Secret:
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ def fetch_open_roadmap_issues(repo: str) -> list[dict]:
|
||||||
labels = [it.get("name", "") for it in item.get("labels", [])]
|
labels = [it.get("name", "") for it in item.get("labels", [])]
|
||||||
if "roadmap" not in labels:
|
if "roadmap" not in labels:
|
||||||
continue
|
continue
|
||||||
|
if "roadmap-report" in labels:
|
||||||
|
continue
|
||||||
out.append(item)
|
out.append(item)
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
@ -223,6 +225,26 @@ def upsert_issue(repo: str, title: str, body_file: Path, labels: list[str]) -> s
|
||||||
expect_json=True,
|
expect_json=True,
|
||||||
)
|
)
|
||||||
existing = next((item for item in payload if item.get("title") == title), None)
|
existing = next((item for item in payload if item.get("title") == title), None)
|
||||||
|
if not existing and labels:
|
||||||
|
fallback = run(
|
||||||
|
[
|
||||||
|
"gh",
|
||||||
|
"issue",
|
||||||
|
"list",
|
||||||
|
"--repo",
|
||||||
|
repo,
|
||||||
|
"--state",
|
||||||
|
"open",
|
||||||
|
"--label",
|
||||||
|
labels[0],
|
||||||
|
"--json",
|
||||||
|
"number,title,url",
|
||||||
|
"--limit",
|
||||||
|
"20",
|
||||||
|
],
|
||||||
|
expect_json=True,
|
||||||
|
)
|
||||||
|
existing = next((item for item in fallback if str(item.get("title", "")).startswith("[Roadmap] Weekly")), None)
|
||||||
if existing:
|
if existing:
|
||||||
run(
|
run(
|
||||||
[
|
[
|
||||||
|
|
@ -232,10 +254,14 @@ def upsert_issue(repo: str, title: str, body_file: Path, labels: list[str]) -> s
|
||||||
str(existing["number"]),
|
str(existing["number"]),
|
||||||
"--repo",
|
"--repo",
|
||||||
repo,
|
repo,
|
||||||
|
"--title",
|
||||||
|
title,
|
||||||
"--body-file",
|
"--body-file",
|
||||||
str(body_file),
|
str(body_file),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
for label in labels:
|
||||||
|
run(["gh", "issue", "edit", str(existing["number"]), "--repo", repo, "--add-label", label])
|
||||||
return existing["url"]
|
return existing["url"]
|
||||||
|
|
||||||
cmd = [
|
cmd = [
|
||||||
|
|
@ -260,8 +286,9 @@ def main() -> int:
|
||||||
parser.add_argument("--repo", required=True, help="OWNER/REPO")
|
parser.add_argument("--repo", required=True, help="OWNER/REPO")
|
||||||
parser.add_argument("--project-owner", default="", help="Project owner login, e.g. @me or OliverGiertz")
|
parser.add_argument("--project-owner", default="", help="Project owner login, e.g. @me or OliverGiertz")
|
||||||
parser.add_argument("--project-number", type=int, default=0, help="Project number")
|
parser.add_argument("--project-number", type=int, default=0, help="Project number")
|
||||||
parser.add_argument("--days-upcoming", type=int, default=14)
|
parser.add_argument("--days-upcoming", type=int, default=7)
|
||||||
parser.add_argument("--upsert-issue-title", default="[Roadmap] Weekly Health Report")
|
parser.add_argument("--upsert-issue-title", default="[Roadmap] Weekly Deadlines (7 Tage)")
|
||||||
|
parser.add_argument("--labels", default="roadmap-report,roadmap,ops", help="Comma-separated labels for report issue")
|
||||||
parser.add_argument("--output-file", type=Path, default=Path("roadmap-health-report.md"))
|
parser.add_argument("--output-file", type=Path, default=Path("roadmap-health-report.md"))
|
||||||
parser.add_argument("--dry-run", action="store_true")
|
parser.add_argument("--dry-run", action="store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
@ -280,7 +307,7 @@ def main() -> int:
|
||||||
print(report)
|
print(report)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
labels = ["roadmap-report", "roadmap"]
|
labels = [it.strip() for it in args.labels.split(",") if it.strip()]
|
||||||
for label in labels:
|
for label in labels:
|
||||||
ensure_label(args.repo, label)
|
ensure_label(args.repo, label)
|
||||||
issue_url = upsert_issue(args.repo, args.upsert_issue_title, args.output_file, labels)
|
issue_url = upsert_issue(args.repo, args.upsert_issue_title, args.output_file, labels)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue