# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: "Build, lint, and test" on: push: branches: - main pull_request: branches: - main permissions: contents: read jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "pip" allow-prereleases: true - name: Install hatch run: pip install hatch - name: Test with pytest run: hatch run cov - name: Run E2E tests with behave run: hatch run e2e - if: matrix.python-version == '3.11' name: Upload coverage to Codecov uses: codecov/codecov-action@v4.5.0 with: flags: unittests # optional name: coverage # optional fail_ci_if_error: true # optional (default = false) verbose: true # optional (default = false) token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: "pip" - name: Run pre-commit uses: pre-commit/action@v3.0.1 sast: runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: python config-file: ./.github/codeql-config.yml - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3