name: Build on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest strategy: matrix: python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: ${{ matrix.python_version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install hatch - name: Lint and typecheck run: | hatch run lint-check test: runs-on: ubuntu-latest strategy: matrix: python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: ${{ matrix.python_version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install hatch - name: Test run: | hatch run test-cov-xml - uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true verbose: true - name: Build and install it on system host run: | hatch build pip install dist/fastapi_users-*.whl python test_build.py release: runs-on: ubuntu-latest needs: [lint, test] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.10" - name: Install dependencies shell: bash run: | python -m pip install --upgrade pip pip install hatch - name: Build and publish on PyPI env: HATCH_INDEX_USER: ${{ secrets.HATCH_INDEX_USER }} HATCH_INDEX_AUTH: ${{ secrets.HATCH_INDEX_AUTH }} run: | hatch build hatch publish - name: Create release uses: ncipollo/release-action@v1 with: draft: true body: ${{ github.event.head_commit.message }} artifacts: dist/*.whl,dist/*.tar.gz token: ${{ secrets.GITHUB_TOKEN }}