Require binary-observed Pitot agent E2E #114
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: Verify Pitot lab | |
| on: | |
| pull_request: | |
| paths: | |
| - "labs/15-pitot/**" | |
| - "go.work" | |
| - ".github/workflows/pitot-lab.yml" | |
| - ".github/workflows/pitot-e2e*.yml" | |
| - ".github/scripts/pitot_e2e_report.py" | |
| push: | |
| branches: [main] | |
| paths: | |
| - "labs/15-pitot/**" | |
| - "go.work" | |
| - ".github/workflows/pitot-lab.yml" | |
| - ".github/workflows/pitot-e2e*.yml" | |
| - ".github/scripts/pitot_e2e_report.py" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: pitot-lab-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| runtime: | |
| name: Runtime (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| working-directory: labs/15-pitot/pitot | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - name: Show toolchain | |
| run: go version | |
| # The module must stand on its own, independent of the workspace, so the | |
| # released projection is coherent. GOWORK=off proves that. | |
| - name: Test module (isolated) | |
| env: | |
| GOWORK: "off" | |
| run: go test ./... | |
| - name: Build reference executable | |
| env: | |
| GOWORK: "off" | |
| run: go build ./cmd/pitot | |
| wind-tunnel: | |
| name: Wind tunnel (HEAD-to-HEAD) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| # Runs from the repo root so the committed go.work binds every co-resident | |
| # module at HEAD. This is where the future Boatstack <-> Pitot leg lands. | |
| - name: Integrated HEAD check | |
| run: go test -tags windtunnel ./labs/15-pitot/pitot/windtunnel/ | |
| import-boundary: | |
| name: Sensor-innocence boundary | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - name: Enforce sensor does not import bridge | |
| run: bash labs/15-pitot/scripts/check_import_boundary.sh | |
| projection: | |
| name: Generated distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: labs/15-pitot/pitot/go.mod | |
| cache-dependency-path: labs/15-pitot/pitot/go.mod | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| - name: Require an append-only release message | |
| if: github.event_name == 'pull_request' | |
| run: >- | |
| python labs/15-pitot/scripts/release_notes.py check-policy | |
| --repo . | |
| --base "${{ github.event.pull_request.base.sha }}" | |
| --head "${{ github.event.pull_request.head.sha }}" | |
| - name: Generate Types | |
| run: bash labs/15-pitot/scripts/generate_types.sh | |
| - name: Verify generated Python SDK syntax | |
| run: python -m py_compile labs/15-pitot/pitot-distribution/sdk/python/pitot/types.py | |
| - name: Supervise adapter verification boundary | |
| run: python labs/15-pitot/scripts/pitot_adapter_supervisor.py check | |
| - name: Verify projection and public surface | |
| run: python -m unittest discover -s labs/15-pitot/tests -p 'test_*.py' |