name: CI on: [pull_request_target] env: PYTHON_VERSION: '3.9' VENV_DIR: tilelang_ci jobs: format-check: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} token: ${{ secrets.PAT }} - name: Set up Python uses: actions/setup-python@v2 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install yapf==0.40.2 toml==0.10.2 tomli==2.0.1 ruff==0.6.5 codespell==2.3.0 clang-format==15.0.7 - name: Run format check run: | git clone https://github.com/tile-ai/tilelang.git main_repo cp main_repo/format.sh . rm -rf main_repo if ! output=$(./format.sh 2>&1); then printf '%s\n' "$output" | grep "Please review and stage the changes." fi - name: Commit and Push Changes uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "lint" build-test: runs-on: self-hosted needs: format-check permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} - name: Set up Python uses: actions/setup-python@v2 with: python-version: ${{ env.PYTHON_VERSION }} - name: Ensure venv (local & persistent) run: | set -e REQS_HASH=$(cat requirements-test.txt 2>/dev/null || true) MARKER="${{ runner.tool_cache }}/.venv_marker_${{ env.PYTHON_VERSION }}_${REQS_HASH:0:8}" if [[ -f "$MARKER" ]] && [[ -f "${{ runner.tool_cache }}/${{ env.VENV_DIR }}/bin/activate" ]]; then echo "venv exists and hash matches – reuse it" else echo "venv stale or missing – recreating" rm -rf "${{ runner.tool_cache }}/${{ env.VENV_DIR }}" "$MARKER" python -m venv "${{ runner.tool_cache }}/${{ env.VENV_DIR }}" source "${{ runner.tool_cache }}/${{ env.VENV_DIR }}/bin/activate" python -m pip install --upgrade pip --no-user [[ -f requirements-test.txt ]] && \ PIP_NO_BUILD_ISOLATION=1 pip install -r requirements-test.txt --no-user pip install . --no-user touch "$MARKER" fi - name: Install project (wheel form) run: | source "${{ runner.tool_cache }}/${{ env.VENV_DIR }}/bin/activate" pip install . --no-user - name: Run examples run: | source "${{ runner.tool_cache }}/${{ env.VENV_DIR }}/bin/activate" cd examples unset PYTHONPATH python -m pytest -n 8 **/test*.py - name: Run tests run: | source "${{ runner.tool_cache }}/${{ env.VENV_DIR }}/bin/activate" cd testing/python unset PYTHONPATH python -m pytest -n 8