This commit is contained in:
101
.github/workflows/hive-mind-cli-cross-platform.yml
vendored
Normal file
101
.github/workflows/hive-mind-cli-cross-platform.yml
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
name: hive-mind-cli cross-platform install + smoke
|
||||
|
||||
# Wave 1 cleanup brief 2026-04-29 §3.5 — windows-latest CI regression test.
|
||||
# Verifies that `npm install -g @waggle/hive-mind-cli` followed by `hive-mind-cli doctor`
|
||||
# works without ENOENT, quarantine, or manual debug on Windows + macOS + Linux.
|
||||
#
|
||||
# Acceptance per feedback_memory_install_dead_simple binding rule:
|
||||
# - All three OS matrix cells PASS green
|
||||
# - Zero manual intervention required
|
||||
# - First MCP-style tool call (the doctor smoke test) succeeds in <60s
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, 'feature/**']
|
||||
paths:
|
||||
- 'packages/hive-mind-cli/**'
|
||||
- 'packages/hive-mind-shim-core/**'
|
||||
- 'packages/hive-mind-core/**'
|
||||
- 'packages/hive-mind-mcp-server/**'
|
||||
- 'packages/hive-mind-wiki-compiler/**'
|
||||
- 'packages/hive-mind-hooks-claude-code/**'
|
||||
- '.github/workflows/hive-mind-cli-cross-platform.yml'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'packages/hive-mind-cli/**'
|
||||
- 'packages/hive-mind-shim-core/**'
|
||||
- 'packages/hive-mind-core/**'
|
||||
|
||||
jobs:
|
||||
install-and-smoke:
|
||||
name: ${{ matrix.os }} install + smoke
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
node-version: ['20.x']
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Install workspace deps
|
||||
run: npm install
|
||||
|
||||
# hive-mind-core imports @waggle/shared, whose dist/ is gitignored and so
|
||||
# absent on a clean checkout. hive-mind-core/tsconfig declares no project
|
||||
# reference to it (the OSS subtree-split mirrors that tsconfig, so a
|
||||
# ../shared reference would dangle in the export root), so `tsc --build`
|
||||
# won't bootstrap it. Build shared first — same as ci.yml/tauri-build-pr.yml.
|
||||
- name: Build @waggle/shared (hive-mind-core dep)
|
||||
run: cd packages/shared && npx tsc --build
|
||||
|
||||
- name: Build hive-mind-core (substrate)
|
||||
run: cd packages/hive-mind-core && npx tsc --build
|
||||
|
||||
- name: Build hive-mind-wiki-compiler
|
||||
run: cd packages/hive-mind-wiki-compiler && npx tsc --build
|
||||
|
||||
- name: Build hive-mind-mcp-server
|
||||
run: cd packages/hive-mind-mcp-server && npx tsc --build
|
||||
|
||||
- name: Build hive-mind-cli
|
||||
run: cd packages/hive-mind-cli && npx tsc --build
|
||||
|
||||
- name: Run postinstall (bundles fix on win32, no-op POSIX)
|
||||
run: node packages/hive-mind-cli/postinstall.cjs
|
||||
|
||||
- name: Init hive-mind data dir (scaffold personal.mind for the smoke)
|
||||
run: node packages/hive-mind-cli/dist/index.js init
|
||||
env:
|
||||
HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home
|
||||
|
||||
- name: Smoke test — hive-mind-cli doctor (independent of upstream hook)
|
||||
run: node packages/hive-mind-cli/dist/index.js doctor
|
||||
env:
|
||||
# doctor + init resolve the mind via HIVE_MIND_DATA_DIR (the CLI never
|
||||
# reads WAGGLE_HOME — that prior env was a no-op). Isolate to a CI temp
|
||||
# dir; init above scaffolds personal.mind there so doctor finds it.
|
||||
HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home
|
||||
|
||||
- name: Doctor smoke result must be green (no quarantine, no ENOENT)
|
||||
run: |
|
||||
# If we got here, doctor exited 0 — green. Re-emit a confirmation marker
|
||||
# so log scrapers see the success line clearly.
|
||||
echo "::notice title=hive-mind-cli doctor passed::Cross-platform install + smoke verified on ${{ matrix.os }}"
|
||||
shell: bash
|
||||
|
||||
acceptance:
|
||||
name: Wave 1 acceptance gate
|
||||
runs-on: ubuntu-latest
|
||||
needs: install-and-smoke
|
||||
steps:
|
||||
- name: All matrix cells passed
|
||||
run: echo "Wave 1 dead-simple acceptance criteria met across windows-latest + macos-latest + ubuntu-latest."
|
||||
Reference in New Issue
Block a user