From 13a0f0faa153005d22bd1fb65a4da67040986d75 Mon Sep 17 00:00:00 2001 From: OdooSky v3 Date: Sat, 9 May 2026 13:33:39 +0200 Subject: [PATCH] ci: addon qualification gate (Pillar 1) --- .gitea/workflows/addon-qualify.yml | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .gitea/workflows/addon-qualify.yml diff --git a/.gitea/workflows/addon-qualify.yml b/.gitea/workflows/addon-qualify.yml new file mode 100644 index 0000000..3d9c484 --- /dev/null +++ b/.gitea/workflows/addon-qualify.yml @@ -0,0 +1,46 @@ +# Pillar 1 of the addon-qualification proposal — runs on every push to any +# branch and on every PR. Pulls the latest qualify-addon.py from the v3 +# monorepo and runs it against every addon directory in this repo. +# +# admit-with-warning posture: the workflow does NOT fail the build when an +# addon fails the lint. The result is published as a check annotation so +# operators can see it on the catalog card. (See docs/PROPOSAL_ADDON_QUALIFICATION.md +# in odoo-tower/odooskyv3 for the rationale.) +name: addon-qualify + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + qualify: + runs-on: ubuntu-latest + steps: + - name: Checkout addons repo + uses: actions/checkout@v4 + + - name: Fetch qualify-addon.py from v3 monorepo + run: | + curl -fsSL 'https://git.odoosky.org/odoo-tower/odooskyv3/raw/branch/main/scripts/qualify-addon.py' -o /tmp/qualify-addon.py + chmod +x /tmp/qualify-addon.py + head -1 /tmp/qualify-addon.py + + - name: Run qualifier on every addon + run: | + set +e + ADDONS=() + for d in addons/*/; do + [ -f "$d/__manifest__.py" ] && ADDONS+=("${d%/}") + done + if [ ${#ADDONS[@]} -eq 0 ]; then + echo "No addons under addons/ — nothing to qualify" + exit 0 + fi + echo "Qualifying ${#ADDONS[@]} addons..." + python3 /tmp/qualify-addon.py "${ADDONS[@]}" + QUAL_RC=$? + echo + echo "::notice ::qualifier exit code $QUAL_RC (admit-with-warning — not failing build)" + # Always succeed; the report is the artifact. + exit 0