chore: Backlog-Status in Board-Skripten ergaenzen
- set-board-status.ps1: 'Backlog' (4ce6ee37) als gueltigen Status erganzt - create-next-ticket.ps1: -Status Parameter (Todo|Backlog, Default: Todo) Todo: Order = min - 1 (naechstes Ticket) Backlog: Order = max + 10 (ans Ende gestellt) Explizite Status-Setzung via gh project item-edit nach Board-Add
This commit is contained in:
parent
d354e3b37c
commit
95e262d009
2 changed files with 51 additions and 20 deletions
66
.github/skills/gh-tickets/create-next-ticket.ps1
vendored
66
.github/skills/gh-tickets/create-next-ticket.ps1
vendored
|
|
@ -1,10 +1,11 @@
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Erstellt ein neues GitHub-Issue und setzt es als nächstes Ticket im Board.
|
Erstellt ein neues GitHub-Issue und fügt es zum Project Board hinzu.
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Legt ein Issue an, fügt es zum Project Board hinzu und setzt den Order-Wert
|
Legt ein Issue an, fügt es zum Project Board hinzu, setzt den Board-Status
|
||||||
auf den niedrigsten aller offenen (nicht-Done) Items minus 1.
|
und den Order-Wert.
|
||||||
Dadurch wird es automatisch das nächste abzuarbeitende Ticket.
|
- Status "Todo" (Standard): Order = niedrigster Todo-Wert minus 1 → wird als nächstes Ticket eingereiht.
|
||||||
|
- Status "Backlog": Order = höchster nicht-Done-Wert plus 10 → wird ans Ende gestellt.
|
||||||
.PARAMETER Title
|
.PARAMETER Title
|
||||||
Titel des neuen Issues.
|
Titel des neuen Issues.
|
||||||
.PARAMETER Body
|
.PARAMETER Body
|
||||||
|
|
@ -12,16 +13,25 @@
|
||||||
.PARAMETER Labels
|
.PARAMETER Labels
|
||||||
Komma-separierte Labels (z.B. "migration,crm,enhancement"). Muss mindestens
|
Komma-separierte Labels (z.B. "migration,crm,enhancement"). Muss mindestens
|
||||||
ein Type-Label enthalten: migration, tech-decision oder infrastructure.
|
ein Type-Label enthalten: migration, tech-decision oder infrastructure.
|
||||||
|
.PARAMETER Status
|
||||||
|
Board-Status des neuen Tickets: "Todo" (Standard) oder "Backlog".
|
||||||
#>
|
#>
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)][string]$Title,
|
[Parameter(Mandatory)][string]$Title,
|
||||||
[string]$Body = "",
|
[string]$Body = "",
|
||||||
[Parameter(Mandatory)][string]$Labels
|
[Parameter(Mandatory)][string]$Labels,
|
||||||
|
[ValidateSet("Todo", "Backlog")]
|
||||||
|
[string]$Status = "Todo"
|
||||||
)
|
)
|
||||||
|
|
||||||
$repo = "jreinemann-euris/krisenvorrat"
|
$repo = "jreinemann-euris/krisenvorrat"
|
||||||
$projectId = "PVT_kwHOCFqiJ84BXk9U"
|
$projectId = "PVT_kwHOCFqiJ84BXk9U"
|
||||||
$orderFieldId = "PVTF_lAHOCFqiJ84BXk9UzhSw4jo"
|
$orderFieldId = "PVTF_lAHOCFqiJ84BXk9UzhSw4jo"
|
||||||
|
$statusFieldId = "PVTSSF_lAHOCFqiJ84BXk9UzhSw4es"
|
||||||
|
$statusOptionMap = @{
|
||||||
|
"Todo" = "f75ad846"
|
||||||
|
"Backlog" = "4ce6ee37"
|
||||||
|
}
|
||||||
|
|
||||||
# --- 1. Type-Label validieren ---
|
# --- 1. Type-Label validieren ---
|
||||||
$labelList = $Labels -split ',' | ForEach-Object { $_.Trim() }
|
$labelList = $Labels -split ',' | ForEach-Object { $_.Trim() }
|
||||||
|
|
@ -54,17 +64,29 @@ if ($LASTEXITCODE -ne 0) {
|
||||||
}
|
}
|
||||||
$itemId = ($addResult | ConvertFrom-Json).id
|
$itemId = ($addResult | ConvertFrom-Json).id
|
||||||
|
|
||||||
# --- 4. Niedrigsten Order-Wert ermitteln ---
|
# --- 4. Order-Wert ermitteln ---
|
||||||
$raw = gh project item-list 2 --owner jreinemann-euris --format json --limit 200 | ConvertFrom-Json
|
$raw = gh project item-list 2 --owner jreinemann-euris --format json --limit 200 | ConvertFrom-Json
|
||||||
$minOrder = $raw.items |
|
$otherItems = $raw.items | Where-Object { $_.status -ne "Done" -and $_.id -ne $itemId }
|
||||||
Where-Object { $_.status -ne "Done" -and $_.id -ne $itemId } |
|
|
||||||
ForEach-Object { [double]$_.order } |
|
|
||||||
Where-Object { $_ -gt 0 } |
|
|
||||||
Measure-Object -Minimum |
|
|
||||||
Select-Object -ExpandProperty Minimum
|
|
||||||
|
|
||||||
if ($null -eq $minOrder) { $minOrder = 10 }
|
if ($Status -eq "Todo") {
|
||||||
$newOrder = $minOrder - 1
|
# Als nächstes Ticket: niedrigster bestehender Wert minus 1
|
||||||
|
$refOrder = $otherItems |
|
||||||
|
ForEach-Object { [double]$_.order } |
|
||||||
|
Where-Object { $_ -gt 0 } |
|
||||||
|
Measure-Object -Minimum |
|
||||||
|
Select-Object -ExpandProperty Minimum
|
||||||
|
if ($null -eq $refOrder) { $refOrder = 10 }
|
||||||
|
$newOrder = $refOrder - 1
|
||||||
|
} else {
|
||||||
|
# Backlog: ans Ende stellen (höchster bestehender Wert plus 10)
|
||||||
|
$refOrder = $otherItems |
|
||||||
|
ForEach-Object { [double]$_.order } |
|
||||||
|
Where-Object { $_ -gt 0 } |
|
||||||
|
Measure-Object -Maximum |
|
||||||
|
Select-Object -ExpandProperty Maximum
|
||||||
|
if ($null -eq $refOrder) { $refOrder = 0 }
|
||||||
|
$newOrder = $refOrder + 10
|
||||||
|
}
|
||||||
|
|
||||||
# --- 5. Order setzen ---
|
# --- 5. Order setzen ---
|
||||||
gh project item-edit --project-id $projectId --id $itemId --field-id $orderFieldId --number $newOrder 2>&1 | Out-Null
|
gh project item-edit --project-id $projectId --id $itemId --field-id $orderFieldId --number $newOrder 2>&1 | Out-Null
|
||||||
|
|
@ -73,4 +95,12 @@ if ($LASTEXITCODE -ne 0) {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "#$issueNumber $Title (Order: $newOrder)"
|
# --- 6. Board-Status setzen ---
|
||||||
|
$optionId = $statusOptionMap[$Status]
|
||||||
|
gh project item-edit --project-id $projectId --id $itemId --field-id $statusFieldId --single-select-option-id $optionId 2>&1 | Out-Null
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Error "Fehler beim Setzen des Board-Status."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "#$issueNumber $Title (Status: $Status, Order: $newOrder)"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Ermittelt die Item-ID des Issues im Board und setzt den Status
|
Ermittelt die Item-ID des Issues im Board und setzt den Status
|
||||||
auf den angegebenen Wert.
|
auf den angegebenen Wert.
|
||||||
Akzeptierte Werte: "Todo", "InProgress" (oder "In Progress"), "Done".
|
Akzeptierte Werte: "Todo", "InProgress" (oder "In Progress"), "Done", "Backlog".
|
||||||
.PARAMETER IssueNumber
|
.PARAMETER IssueNumber
|
||||||
Die Issue-Nummer (z.B. 68).
|
Die Issue-Nummer (z.B. 68).
|
||||||
.PARAMETER Status
|
.PARAMETER Status
|
||||||
|
|
@ -25,11 +25,12 @@ $statusMap = @{
|
||||||
"Todo" = "f75ad846"
|
"Todo" = "f75ad846"
|
||||||
"InProgress" = "47fc9ee4"
|
"InProgress" = "47fc9ee4"
|
||||||
"Done" = "98236657"
|
"Done" = "98236657"
|
||||||
|
"Backlog" = "4ce6ee37"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not $statusMap.ContainsKey($normalizedStatus)) {
|
if (-not $statusMap.ContainsKey($normalizedStatus)) {
|
||||||
$valid = $statusMap.Keys -join ", "
|
$valid = $statusMap.Keys -join ", "
|
||||||
Write-Error "Ungültiger Status '$Status'. Gültige Werte: $valid (auch 'In Progress' für InProgress)."
|
Write-Error "Ungültiger Status '$Status'. Gültige Werte: $valid (auch 'In Progress' für InProgress, 'Backlog' für Backlog)."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
$optionId = $statusMap[$normalizedStatus]
|
$optionId = $statusMap[$normalizedStatus]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue