Skip to content

Require binary-observed Pitot agent E2E #114

Require binary-observed Pitot agent E2E

Require binary-observed Pitot agent E2E #114

Workflow file for this run

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'