Repository navigation
feat(#917): catalogue des dissecteurs Lua dans la banque Lua (CLI, GUI, API) #595
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Couverture incrémentale par PR : commente chaque PR vers `dev` avec la | |
| # couverture totale et le delta vs la base (`dev`), suite de #224. | |
| # | |
| # Principe : la suite etant rapide (~10 s), on execute pytest --cov deux | |
| # fois -- une fois sur le ref de fusion de la PR, une fois sur le SHA de | |
| # base -- puis scripts/pr_coverage_comment.py publie (ou met a jour) un | |
| # commentaire sur la PR. Aucun seuil bloquant ici : | |
| # le seuil bloquant (fail_under, #246) est applique par ci.yml ; ici il est | |
| # neutralise (--cov-fail-under=0) pour que le commentaire soit publie meme | |
| # quand la PR passe dessous -- c'est justement la qu'il est utile. | |
| name: Couverture par PR | |
| on: | |
| pull_request: | |
| branches: [dev] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| commentaire-couverture: | |
| name: Couverture (delta vs dev) | |
| # Runners maison (groupe maison, Ubuntu 20.04, root) ; repli GitHub : | |
| # variable NETCROSS_RUNS_ON_LEGER = '"ubuntu-latest"'. | |
| runs-on: ${{ fromJSON(vars.NETCROSS_RUNS_ON_LEGER || '{"group":"maison","labels":["self-hosted","linux"]}') }} | |
| steps: | |
| - name: Checkout de la PR (ref de fusion) | |
| uses: actions/checkout@v4 | |
| - name: Installation de uv | |
| uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 | |
| with: | |
| enable-cache: true | |
| - name: Installation de Python | |
| run: uv python install 3.14 | |
| # test_catalogues_a_jour_avec_les_sources compare les catalogues | |
| # regeneres par le gettext installe : celui des runners maison | |
| # (0.19, Ubuntu 20.04) formate autrement que celui du projet. Ce test | |
| # reste execute par ci.yml (conteneur ubuntu:26.04) ; il est retire ici | |
| # des deux mesures (PR et base), le delta reste donc comparable. | |
| - name: Dépendances + couverture de la PR | |
| run: | | |
| uv sync --extra dev | |
| uv run pytest --cov --cov-fail-under=0 --cov-report=json:coverage-pr.json -q --deselect tests/test_i18n.py::test_catalogues_a_jour_avec_les_sources | |
| uv sync --extra dev --extra ai | |
| uv run pytest --cov --cov-report=json:coverage-pr.json -q --deselect tests/test_i18n.py::test_catalogues_a_jour_avec_les_sources | |
| - name: Couverture de la base (SHA de dev) | |
| run: | | |
| git fetch --no-tags --depth=1 origin ${{ github.event.pull_request.base.sha }} | |
| # Runners auto-hébergés : l'espace de travail persiste d'un job à | |
| # l'autre, l'arbre de la base d'un run précédent peut subsister. | |
| BASE_DIR="$RUNNER_TEMP/netcross-base" | |
| rm -rf "$BASE_DIR" ../base # ../base : emplacement des runs précédents | |
| git worktree prune | |
| git worktree add --force "$BASE_DIR" ${{ github.event.pull_request.base.sha }} | |
| cd "$BASE_DIR" | |
| uv sync --extra dev | |
| uv run pytest --cov --cov-fail-under=0 --cov-report=json:coverage-base.json -q --deselect tests/test_i18n.py::test_catalogues_a_jour_avec_les_sources | |
| mv coverage-base.json "$OLDPWD/" | |
| - name: Nettoyage de l'arbre de la base | |
| if: always() | |
| run: | | |
| git worktree remove --force "$RUNNER_TEMP/netcross-base" 2>/dev/null || true | |
| git worktree prune | |
| - name: Publication du commentaire de couverture | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| uv run --no-project --python 3.14 scripts/pr_coverage_comment.py \ | |
| --pr-json coverage-pr.json \ | |
| --base-json coverage-base.json \ | |
| --pr-number "${{ github.event.pull_request.number }}" |