name: CI on: push: branches: [master] pull_request: jobs: test-cli: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: https://github.com/astral-sh/setup-uv@v5 with: python-version: "3.13" - run: uv sync --all-packages - run: uv run pytest tests/ test-sqlmesh: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: https://github.com/astral-sh/setup-uv@v5 with: python-version: "3.13" - run: uv sync --all-packages - run: cd transform/sqlmesh_materia && uv run sqlmesh test test-web: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: https://github.com/astral-sh/setup-uv@v5 with: python-version: "3.13" - run: uv sync --all-packages - run: cd web && uv run pytest tests/ -x -q - run: cd web && uv run ruff check src/ tests/ # Creates v tag after all tests pass. The on-server supervisor polls for new # tags every 60s and deploys automatically. No SSH keys or deploy credentials # needed in CI — only the built-in github.token. tag: needs: [test-cli, test-sqlmesh, test-web] runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v4 with: token: ${{ github.token }} - name: Create and push tag run: | git config user.name "CI" git config user.email "ci@noreply" git tag "v${{ github.run_number }}" git push origin "v${{ github.run_number }}"