| name: build |
| on: |
| push: |
| branches: [master] |
| pull_request: |
| branches: [master] |
| |
| jobs: |
| test: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| python-version: ['3.10', '3.11', '3.12'] |
| mongodb-version: ['4.4'] |
| os: [ubuntu-latest] |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v2 |
| |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v2 |
| with: |
| python-version: ${{ matrix.python-version }} |
| |
| - name: Start MongoDB |
| uses: supercharge/mongodb-github-action@1.6.0 |
| with: |
| mongodb-version: ${{ matrix.mongodb-version }} |
| |
| - name: Install dependencies |
| run: | |
| pip install -r requirements.txt |
| pip install coveralls |
| |
| - name: Run tests |
| run: | |
| coverage run -m unittest discover --verbose --start-directory tests/ --pattern "test_*.py" --top-level-directory tests/ |
| |
| - name: Upload coverage data to coveralls.io |
| run: coveralls --service=github |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| COVERALLS_FLAG_NAME: ${{ matrix.os }} - ${{ matrix.python-version }} |
| COVERALLS_PARALLEL: true |
| |
| lint: |
| name: Run Linters |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v2 |
| |
| - name: Super-Linter |
| uses: github/super-linter@v4.2.2 |
| env: |
| VALIDATE_PYTHON_BLACK: true |
| DEFAULT_BRANCH: master |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| |
| coveralls: |
| name: Indicate completion to coveralls.io |
| needs: test |
| runs-on: ubuntu-latest |
| container: python:3-slim |
| steps: |
| - name: Finished |
| run: | |
| pip3 install --upgrade coveralls |
| coveralls --finish |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| |
| release: |
| name: Release |
| runs-on: ubuntu-latest |
| needs: [ test, coveralls ] |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: 0 |
| |
| - name: Setup Node.js |
| uses: actions/setup-node@v2 |
| with: |
| node-version: '20' |
| |
| - name: Setup |
| run: npm install -g semantic-release @semantic-release/github @semantic-release/commit-analyzer @semantic-release/release-notes-generator semantic-release-pypi |
| |
| - name: Set up python |
| uses: actions/setup-python@v2 |
| with: |
| python-version: '3.12' |
| |
| - name: Install setuptools |
| run: python -m pip install --upgrade setuptools wheel twine |
| |
| - name: Release |
| env: |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} |
| run: npx semantic-release |