Merge feature/confidence-intelligence — enriched telemetry + communit… #408
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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install kiln with dev deps | |
| # Lock file: kiln/requirements-lock.txt (pinned versions for reproducible builds) | |
| # To enforce pinned versions, use: pip install -r kiln/requirements-lock.txt && pip install -e "./kiln[dev,bambu]" --no-deps | |
| run: pip install -e "./kiln[dev,bambu]" | |
| - name: Install octoprint-cli with dev deps | |
| # Lock file: octoprint-cli/requirements-lock.txt (pinned versions for reproducible builds) | |
| # To enforce pinned versions, use: pip install -r octoprint-cli/requirements-lock.txt && pip install -e "./octoprint-cli[dev]" --no-deps | |
| run: pip install -e "./octoprint-cli[dev]" | |
| - name: Install linter | |
| run: pip install ruff | |
| - name: Lint kiln | |
| run: cd kiln && ruff check src/ | |
| - name: Lint octoprint-cli | |
| run: cd octoprint-cli && ruff check src/ | |
| - name: Run kiln tests | |
| run: cd kiln && python -m pytest tests/ -v --cov=kiln --cov-report=term-missing | |
| - name: Run octoprint-cli tests | |
| run: cd octoprint-cli && python -m pytest tests/ -v --cov=octoprint_cli --cov-report=term-missing | |
| - name: Check kiln dependency drift | |
| run: | | |
| pip freeze | grep -v "^-e" | sort > /tmp/current-deps.txt | |
| if [ -f kiln/requirements-lock.txt ]; then | |
| # Strip comments from lock file | |
| grep -v "^#" kiln/requirements-lock.txt | sort > /tmp/lock-deps.txt | |
| DIFF=$(diff /tmp/lock-deps.txt /tmp/current-deps.txt || true) | |
| if [ -n "$DIFF" ]; then | |
| echo "::warning::Dependency drift detected between installed packages and kiln/requirements-lock.txt" | |
| echo "$DIFF" | |
| else | |
| echo "Dependencies match lock file" | |
| fi | |
| fi | |
| continue-on-error: true | |
| - name: Check octoprint-cli dependency drift | |
| run: | | |
| pip freeze | grep -v "^-e" | sort > /tmp/current-deps.txt | |
| if [ -f octoprint-cli/requirements-lock.txt ]; then | |
| # Strip comments from lock file | |
| grep -v "^#" octoprint-cli/requirements-lock.txt | sort > /tmp/lock-deps.txt | |
| DIFF=$(diff /tmp/lock-deps.txt /tmp/current-deps.txt || true) | |
| if [ -n "$DIFF" ]; then | |
| echo "::warning::Dependency drift detected between installed packages and octoprint-cli/requirements-lock.txt" | |
| echo "$DIFF" | |
| else | |
| echo "Dependencies match lock file" | |
| fi | |
| fi | |
| continue-on-error: true | |
| - name: Generate SBOM (CycloneDX) | |
| if: matrix.python-version == '3.12' | |
| run: | | |
| pip install cyclonedx-bom | |
| cyclonedx-py environment --output-format json -o sbom.json | |
| echo "SBOM generated: $(wc -c < sbom.json) bytes" | |
| continue-on-error: true | |
| - name: Upload SBOM artifact | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: sbom | |
| path: sbom.json | |
| retention-days: 90 | |
| continue-on-error: true |