Git e pull request
Obiettivo: aprire e fondere una pull request da un flow, con il controllo umano che un merge vuole.
Prerequisiti
- Un token GitHub con permesso di aprire e fondere pull request sul repository di destinazione.
- Il token in una variabile d'ambiente che il worker può leggere.
Passi
-
Scegli la forge del progetto con
Workspace.forge. L'adapter GitHub (afe-github,forges/github) usa la REST API.nonetiene tutto in locale. -
Nomina il token GitHub con
Workspace.tokenEnv. L'adapter lo manda solo nell'headerAuthorization, mai in un URL, in un log, in un evento o in un errore. PuntaforgeUrlall'API di GitHub Enterprise per usarne una. -
Aggiungi
builtin:open_pr. Spinge il branch di integrazione e apre una pull request versodefaultBranch. Il titolo èafe <ticket>: <flow>, e il corpo contiene l'input del ticket e il diff stat. -
Metti un nodo
humansu ogni percorso dabuiltin:open_prabuiltin:merge_pr, lane comprese. La configurazione non valida altrimenti. -
Aggiungi
builtin:merge_pr. Fonde con un merge commit. A runtime rifiuta senza una risposta umana registrata dopoopen_pr: il ticket va inneeds_human.
Note
- Con
forge: nonenon si spinge nulla. La "PR" è un riepilogo con il diff, emerge_pravanza in fast-forward il branch principale locale. builtin:open_prebuiltin:merge_prsono idempotenti. Un crash che riesegue il nodo riusa la stessa PR e non fonde due volte.- Una GitHub App è nel backlog.
Risoluzione dei problemi
'merge_node' is reachable from 'open_node' without a human node: a merge needs a human approval in between
afe validate rifiuta un flow in cui un percorso salta il nodo human, anche attraverso una
lane. Aggiungi un nodo human tra builtin:open_pr e builtin:merge_pr su quel percorso.
Il ticket resta in needs_human dopo open_pr
builtin:merge_pr è girato senza una risposta umana registrata dopo l'open_pr corrispondente.
Rispondi alla richiesta in sospeso con Rispondere alle approvazioni: il
merge procede solo dopo.
merge_pr riparte dopo un crash e non fonde due volte
È atteso, non un guasto: entrambi gli Script built-in sono idempotenti. Una nuova esecuzione trova
la PR o il merge già fatti, e riporta lo stesso esito.