diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dc3d27b..c588f2e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -8,7 +8,18 @@ on: - 'tests/**' - .github/workflows/ci.yaml +permissions: + pull-requests: write + contents: write + checks: write + jobs: + assigner: + runs-on: ubuntu-latest + steps: + - name: Auto-assign + uses: toshimaru/auto-author-assign@v2.1.1 + pre-commit: runs-on: ubuntu-latest steps: @@ -18,4 +29,89 @@ jobs: ref: ${{ github.head_ref }} - name: Run pre-commit - uses: pre-commit/action@v3.0.1 \ No newline at end of file + uses: pre-commit/action@v3.0.1 + + docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: Install dependencies + run: | + pip install pydoctor + curl -L "https://raw.githubusercontent.com/luxonis/python-api-analyzer-to-json/main/gen-docs.py" -o "gen-docs.py" + + - name: Build docs + run: | + python gen-docs.py depthai-nodes + + tests: + needs: + - pre-commit + - docs + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + python-version: ['3.8', '3.10'] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + + - name: Install package + run: pip install -e .[dev] + + - name: Run pytest + uses: pavelzw/pytest-action@v2 + with: + emoji: false + custom-arguments: --cov depthai-nodes --cov-report xml --junit-xml pytest.xml + + - name: Create Test Report + uses: EnricoMi/publish-unit-test-result-action@v2 + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8' + with: + files: pytest.xml + + - name: Generate coverage badge + uses: tj-actions/coverage-badge-py@v2 + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8' + with: + output: media/coverage_badge.svg + + - name: Generate coverage report + uses: orgoro/coverage@v3.1 + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8' + with: + coverageFile: coverage.xml + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Commit coverage badge + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8' + run: | + git config --global user.name 'GitHub Actions' + git config --global user.email 'actions@github.com' + git diff --quiet media/coverage_badge.svg || { + git add media/coverage_badge.svg + git commit -m "[Automated] Updated coverage badge" + } + + - name: Push changes + uses: ad-m/github-push-action@master + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.8' + with: + branch: ${{ github.head_ref }} \ No newline at end of file diff --git a/media/.gitkeep b/media/.gitkeep new file mode 100644 index 0000000..e69de29