docs(exec): steer multi-step/sudo commands to commands=[...] over new… #31
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| lint-and-test: | |
| name: lint-and-test (ubuntu, py${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| pip install ruff | |
| - name: Lint with ruff | |
| run: ruff check portal_mcp_server/ | |
| - name: Check package imports | |
| run: python -c "import portal_mcp_server; assert portal_mcp_server.main; print('import ok')" | |
| - name: Verify CLI entrypoint | |
| run: portal-mcp-server --help | |
| - name: Run tests | |
| run: | | |
| if [ -d tests ] && [ "$(ls -A tests)" ]; then | |
| pytest tests/ -v --tb=short | |
| else | |
| echo "No tests found — skipping." | |
| fi | |
| # macOS is POSIX (AF_UNIX works), so it runs the full suite and additionally | |
| # exercises the launchd credential-agent install path that ubuntu cannot. | |
| test-macos: | |
| name: test (macos) | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| - name: Check package imports | |
| run: python -c "import portal_mcp_server; assert portal_mcp_server.main; print('import ok')" | |
| - name: Verify CLI entrypoint | |
| run: portal-mcp-server --help | |
| - name: Run tests | |
| run: pytest tests/ -v --tb=short | |
| # Windows has no AF_UNIX, so the credential agent uses a named-pipe transport | |
| # plus a per-user logon scheduled task for install. This job is the *only* | |
| # place both run on a real Windows kernel: it verifies the named-pipe | |
| # server/client round trip AND a real Task Scheduler register/query/delete. | |
| # The broader POSIX-shell remote tests are not in scope here. | |
| test-windows: | |
| name: test (windows, named-pipe + scheduled task) | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| - name: Check package imports | |
| run: python -c "import portal_mcp_server; assert portal_mcp_server.main; print('import ok')" | |
| - name: Verify CLI entrypoint | |
| run: portal-mcp-server --help | |
| - name: Run credential-agent named-pipe + scheduled-task tests | |
| run: pytest tests/test_credential_agent_namedpipe.py -v --tb=short |