feat: live audience as default #55
Workflow file for this run
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: Build and Test | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| release: | |
| types: [published] | |
| jobs: | |
| test: | |
| permissions: | |
| contents: read | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Test all Python versions on Ubuntu (primary platform) | |
| - os: ubuntu-latest | |
| python-version: "3.10" | |
| - os: ubuntu-latest | |
| python-version: "3.11" | |
| - os: ubuntu-latest | |
| python-version: "3.12" | |
| - os: ubuntu-latest | |
| python-version: "3.13" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Initialize submodules | |
| env: | |
| GIT_ASKPASS: /bin/echo | |
| GH_PAT: ${{ secrets.GH_PAT }} | |
| run: | | |
| git config --global url."https://${GH_PAT}@github.com/".insteadOf "https://github.com/" | |
| git submodule update --init --recursive | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Install the project | |
| run: uv sync --locked --all-extras --dev | |
| - name: Generate protobuf code | |
| shell: bash | |
| run: | | |
| source .venv/bin/activate | |
| ./scripts/compile_proto.sh || (echo "Protobuf compilation failed. Ensure submodules are initialized and proto files exist." && exit 1) | |
| - name: Run linter | |
| run: | | |
| uv run ruff check | |
| - name: Run code formatting check | |
| run: | | |
| uv run ruff format --check | |
| - name: Run type checking | |
| run: | | |
| uv run pyright | |
| - name: Run tests | |
| run: | | |
| uv run pytest --junitxml=pytest.xml --tb=auto --cov-report=term-missing:skip-covered --cov=src/resolver_athena_client tests/ | tee pytest-coverage.txt | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: ${{ !cancelled() }} | |
| with: | |
| name: test-results-${{ matrix.os }}-py${{ matrix.python-version }} | |
| path: pytest.xml | |
| build: | |
| needs: test | |
| permissions: | |
| contents: read | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Initialize submodules | |
| env: | |
| GIT_ASKPASS: /bin/echo | |
| GH_PAT: ${{ secrets.GH_PAT }} | |
| run: | | |
| git config --global url."https://${GH_PAT}@github.com/".insteadOf "https://github.com/" | |
| git submodule update --init --recursive | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| run: uv python install | |
| - name: Install the project | |
| run: uv sync --locked --all-extras --dev | |
| - name: Generate protobuf code | |
| run: | | |
| source .venv/bin/activate | |
| ./scripts/compile_proto.sh || (echo "Protobuf compilation failed. Ensure submodules are initialized and proto files exist." && exit 1) | |
| - name: Set version from tag | |
| run: | | |
| if [[ "$GITHUB_REF" == refs/tags/* ]]; then | |
| TAG_VERSION=${GITHUB_REF#refs/tags/} | |
| # Remove 'v' prefix if present | |
| VERSION=${TAG_VERSION#v} | |
| echo "Setting version to: $VERSION" | |
| uv version "$VERSION" | |
| else | |
| echo "Not building from a tag, using default version" | |
| fi | |
| - name: Build package | |
| run: uv build | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| publish: | |
| needs: [test, build] | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'release' && github.event.action == 'published' | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/resolver-athena-client | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: dist | |
| path: dist/ | |
| - name: Publish package distributions to PyPI | |
| run: uv publish --trusted-publishing always |