feat: complete TextMate Extensions rendering layer #91
Workflow file for this run
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
| # SPDX-License-Identifier: GPL-2.0-only | |
| # | |
| # Project: Ecli | |
| # File: .github/workflows/ci.yml | |
| # Website: https://www.ecli.io | |
| # Repository: https://github.com/SSobol77/ecli | |
| # PyPI: https://pypi.org/project/ecli-editor/0.0.1/ | |
| # | |
| # Copyright (c) 2026 Siergej Sobolewski | |
| # | |
| # Licensed under the GNU General Public License version 2 only. | |
| # See the LICENSE file in the project root for full license text. | |
| name: CI | |
| "on": | |
| workflow_dispatch: | |
| push: | |
| branches: [main] | |
| paths: | |
| - ".github/workflows/ci.yml" | |
| - "Makefile" | |
| - "main.py" | |
| - "pyproject.toml" | |
| - "scripts/check_runtime_imports.py" | |
| - "scripts/verify_release_assets.py" | |
| - "scripts/verify_runtime.py" | |
| - "src/**" | |
| - "tests/**" | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - ".github/workflows/ci.yml" | |
| - "Makefile" | |
| - "main.py" | |
| - "pyproject.toml" | |
| - "scripts/check_runtime_imports.py" | |
| - "scripts/verify_release_assets.py" | |
| - "scripts/verify_runtime.py" | |
| - "src/**" | |
| - "tests/**" | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| env: | |
| SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
| SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install uv | |
| run: pipx install uv | |
| - name: Sync deps | |
| run: | | |
| if [ -f uv.lock ]; then | |
| uv sync --frozen --extra dev | |
| else | |
| uv sync --extra dev | |
| fi | |
| - name: Lint (ruff) | |
| run: | | |
| if [ -d tests ]; then | |
| uv run ruff check src tests | |
| else | |
| uv run ruff check src | |
| fi | |
| - name: Lint extensions adapter (ruff) | |
| # The imported upstream extension tree under src/ecli/extensions/ is | |
| # excluded from the broad Ruff scan above (issue #98), but the ECLI-owned | |
| # adapter package src/ecli/extensions/ecli_integration/ (issue #100) is | |
| # real source and must be linted explicitly. This focused check does not | |
| # scan the imported upstream tree. | |
| run: | | |
| uv run ruff check src/ecli/extensions/ecli_integration | |
| uv run ruff format --check src/ecli/extensions/ecli_integration | |
| - name: Format check (ruff) | |
| run: | | |
| if [ -d tests ]; then | |
| uv run ruff format --check src tests | |
| else | |
| uv run ruff format --check src | |
| fi | |
| - name: Pytest with coverage | |
| if: ${{ hashFiles('tests/**') != '' }} | |
| run: uv run pytest --cov -q | |
| - name: Release contract validation | |
| run: uv run make PYTHON="uv run python" validate-release-contract | |
| - name: SonarQube Scan | |
| if: ${{ env.SONAR_TOKEN != '' && env.SONAR_HOST_URL != '' && hashFiles('coverage.xml') != '' }} | |
| uses: sonarsource/sonarqube-scan-action@v2 | |
| with: | |
| args: > | |
| -Dsonar.projectKey=ecli | |
| -Dsonar.sources=src | |
| -Dsonar.tests=tests | |
| -Dsonar.python.version=3.11 | |
| -Dsonar.exclusions=src/ecli/extensions/** | |
| -Dsonar.python.coverage.reportPaths=coverage.xml |