ci: retire le job auto-merge redondant (#58)
This commit is contained in:
parent
60ce3460a5
commit
05eca6aea2
3 changed files with 10 additions and 41 deletions
|
|
@ -1,6 +1,8 @@
|
|||
name: CI
|
||||
# CI Wakdo - Forgejo Actions (runner stark-wakdo, label `docker`).
|
||||
# Strategie solo dev : PR obligatoire + auto-merge sur CI verte (voir SECURITY.md).
|
||||
# Strategie solo dev : PR obligatoire ; l'auto-merge NATIF Forgejo
|
||||
# (merge_when_checks_succeed, programme a l'ouverture de la PR) fusionne en squash
|
||||
# des que les checks requis passent. Pas de job de merge dans le workflow.
|
||||
#
|
||||
# Etat des jobs selon la phase projet :
|
||||
# - secret-scan : fonctionnel des maintenant (gitleaks scanne tout le depot)
|
||||
|
|
@ -11,8 +13,7 @@ name: CI
|
|||
on:
|
||||
pull_request:
|
||||
branches: [dev, main]
|
||||
# `labeled` : permet au job auto-merge de s'evaluer quand on pose le label.
|
||||
types: [opened, synchronize, reopened, labeled]
|
||||
types: [opened, synchronize, reopened]
|
||||
push:
|
||||
# dev/main : porte de merge. feat|fix|ci|refactor : feedback avant la PR.
|
||||
branches: [dev, main, 'feat/**', 'fix/**', 'ci/**', 'refactor/**']
|
||||
|
|
@ -169,36 +170,3 @@ jobs:
|
|||
# qu'a tests/e2e via le conteneur officiel.)
|
||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm ci
|
||||
npm run test:js
|
||||
|
||||
auto-merge:
|
||||
# Fusion automatique OPT-IN : poser le label `auto-merge` sur la PR.
|
||||
# Ne s'execute que si tous les checks requis passent (needs).
|
||||
# IMPORTANT : le filtrage par label se fait DANS le step via l'API, pas dans
|
||||
# `if:` — l'expression contains(github.event.pull_request.labels.*.name, ...)
|
||||
# de Forgejo n'est pas fiable (elle s'evalue a vrai meme sans label, ce qui
|
||||
# fusionnait toute PR verte). La verification shell sur l'API est le vrai gate.
|
||||
needs: [secret-scan, php-lint, static-tests, js-tests]
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: docker
|
||||
steps:
|
||||
- name: Install curl
|
||||
run: apt-get update -qq && apt-get install -y -qq curl ca-certificates >/dev/null
|
||||
- name: Merge PR (squash) si label auto-merge present et CI verte
|
||||
run: |
|
||||
API="${{ github.server_url }}/api/v1/repos/${{ github.repository }}"
|
||||
PR="${{ github.event.pull_request.number }}"
|
||||
TOKEN="${{ secrets.FORGEJO_TOKEN }}"
|
||||
labels=$(curl -s -H "Authorization: token $TOKEN" "$API/issues/$PR/labels")
|
||||
if ! printf '%s' "$labels" | grep -q '"name"[[:space:]]*:[[:space:]]*"auto-merge"'; then
|
||||
echo "Pas de label 'auto-merge' sur la PR #$PR -> relecture manuelle, pas de fusion auto."
|
||||
exit 0
|
||||
fi
|
||||
echo "Label 'auto-merge' present + CI verte -> fusion de la PR #$PR"
|
||||
code=$(curl -s -o /tmp/resp -w "%{http_code}" -X POST \
|
||||
-H "Authorization: token $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"Do":"squash","delete_branch_after_merge":true}' \
|
||||
"$API/pulls/$PR/merge")
|
||||
echo "merge HTTP $code"; cat /tmp/resp || true; echo
|
||||
[ "$code" = "200" ] || { echo "auto-merge failed (HTTP $code)"; exit 1; }
|
||||
echo "PR #$PR mergee."
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ commande = phase **P4**, schema en base mais workflow applicatif a venir).
|
|||
| Tests PHP | PHPUnit 11 (`.phar`, sans Composer) | unit + integration DB |
|
||||
| Tests front | node:test + jsdom | harnais kiosk (`tests/js/`) |
|
||||
| Analyse statique | PHPStan niveau 6 (`.phar`) | |
|
||||
| CI/CD | Forgejo Actions | secret-scan, lint, tests, auto-merge |
|
||||
| CI/CD | Forgejo Actions | secret-scan, lint, tests ; merge natif sur CI verte |
|
||||
| Versioning | Git + Forgejo (`git.acadenice.com`, miroir GitHub) | Conventional Commits |
|
||||
|
||||
Justifications (composer-less, from-scratch, etc.) : `docs/PROJECT_CONTEXT.md` section 6.
|
||||
|
|
@ -243,7 +243,8 @@ MCD / MLD / dictionnaire : `docs/merise/`.
|
|||
- **PHPStan niveau 6** (`.phar`).
|
||||
- **CI Forgejo Actions** (`.forgejo/workflows/ci.yml`) : `secret-scan` (gitleaks),
|
||||
`php-lint`, `static-tests` (PHPStan + PHPUnit avec service MariaDB ephemere migre +
|
||||
seede), `js-tests` (Node 20), `auto-merge` (squash sur label + CI verte).
|
||||
seede), `js-tests` (Node 20). Fusion par auto-merge NATIF Forgejo (squash,
|
||||
`merge_when_checks_succeed`) des que les checks requis sont verts — pas de job de merge.
|
||||
- **Branch protection** : `dev` et `main` proteges (PR requise, force-push bloque,
|
||||
checks requis).
|
||||
|
||||
|
|
|
|||
|
|
@ -120,9 +120,9 @@ Detail par entite : `docs/merise/` et `docs/domaines/` (a venir).
|
|||
- **Branches** depuis `dev` : `feat/*`, `fix/*`, `docs/*`, `chore/*`, `ci/*`, `db/*`,
|
||||
`refactor/*`, `test/*`. Merge vers `dev` par **PR squashee**. Periodiquement
|
||||
`dev -> main` avec tag semver.
|
||||
- **Auto-merge** : poser le label `auto-merge` sur la PR -> fusion automatique des que
|
||||
la CI Forgejo est verte (secret-scan, php-lint, static-tests, js-tests).
|
||||
Script : `scripts/forgejo-pr-automerge.sh`.
|
||||
- **Auto-merge** : l'ouverture de la PR programme la fusion squash automatique des que
|
||||
les checks requis passent (auto-merge NATIF Forgejo `merge_when_checks_succeed`, sans
|
||||
label ni job CI). Script : `scripts/forgejo-pr-automerge.sh`.
|
||||
- **Pas de trailer `Co-Authored-By`** : la transparence sur l'usage de l'IA vit dans le
|
||||
`README.md` et `docs/PROJECT_CONTEXT.md` section 17.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue