name: ci on: push: branches: [main] pull_request: permissions: contents: read jobs: backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" cache: pip # pytest and ruff come from the dev extra, so CI matches a fresh clone. - run: pip install -e "./backend[dev]" - run: python -m pytest -q - run: ruff check backend/src bench mcp: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.25" cache-dependency-path: ely-eye-mcp/go.sum - name: Build, vet and test working-directory: ely-eye-mcp run: go build ./... && go vet ./... && go test ./... - name: gofmt is clean working-directory: ely-eye-mcp run: test -z "$(gofmt -l .)" interface: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: npm cache-dependency-path: frontend/package-lock.json - run: npm ci && npm run build working-directory: frontend image: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build the image from a clean clone run: docker build -t ely-eye:ci . - name: The container answers on both faces run: | docker run -d --name elyeye -p 8765:8765 ely-eye:ci url=http://127.0.0.1:8765/api/status for attempt in $(seq 1 30); do curl -fsS "$url" -o /tmp/status.json && break sleep 2 done cat /tmp/status.json curl -fsS http://127.0.0.1:8765/ | grep -q '
' docker logs elyeye