perf: 벤치마크 기반 파이프라인 재정렬 — doc_update HEAVY로 이동 (2,835L) #33
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: NEXUS-6 Ecosystem CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| schedule: | |
| - cron: '0 6 * * 1' # Weekly Monday 06:00 UTC | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| rust-test: | |
| name: Cargo Test (nexus6) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Build | |
| run: cargo build --release | |
| - name: Run tests | |
| run: cargo test --release | |
| - name: Verify lens count | |
| run: | | |
| COUNT=$(grep -c "Box::new" src/telescope/mod.rs) | |
| echo "Active lenses: $COUNT" | |
| [ "$COUNT" -ge 100 ] || exit 1 | |
| python-test: | |
| name: Python Integration | |
| runs-on: ubuntu-latest | |
| needs: rust-test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install maturin | |
| run: pip install maturin numpy | |
| - name: Build PyO3 wheel | |
| run: maturin build --release | |
| - name: Install nexus6 | |
| run: pip install target/wheels/nexus6-*.whl | |
| - name: Test import and scan | |
| run: | | |
| python3 -c " | |
| import nexus6 | |
| import numpy as np | |
| data = np.sin(np.arange(60).reshape(20, 3) * 0.1) | |
| result = nexus6.scan_all(data) | |
| assert isinstance(result, dict), 'scan_all must return dict' | |
| assert len(result) > 0, 'scan_all must return non-empty results' | |
| print(f'OK: {len(result)} lenses returned results') | |
| " | |
| symlink-check: | |
| name: Shared Infra Integrity | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Verify shared structure expectations | |
| run: | | |
| echo "Checking expected shared infrastructure files..." | |
| EXPECTED_FILES=( | |
| "src/telescope/lens_trait.rs" | |
| "src/telescope/shared_data.rs" | |
| "src/telescope/mod.rs" | |
| "src/lib.rs" | |
| "Cargo.toml" | |
| ) | |
| MISSING=0 | |
| for f in "${EXPECTED_FILES[@]}"; do | |
| if [ ! -f "$f" ]; then | |
| echo "MISSING: $f" | |
| MISSING=$((MISSING + 1)) | |
| else | |
| echo "OK: $f" | |
| fi | |
| done | |
| [ "$MISSING" -eq 0 ] || { echo "$MISSING files missing"; exit 1; } | |
| - name: Verify lens module registrations | |
| run: | | |
| echo "Checking all lens files are registered in mod.rs..." | |
| LENS_DIR="src/telescope/lenses" | |
| MOD_FILE="$LENS_DIR/mod.rs" | |
| if [ ! -f "$MOD_FILE" ]; then | |
| echo "WARNING: $MOD_FILE not found, skipping registration check" | |
| exit 0 | |
| fi | |
| UNREGISTERED=0 | |
| for f in "$LENS_DIR"/*_lens.rs; do | |
| BASE=$(basename "$f" .rs) | |
| if ! grep -q "$BASE" "$MOD_FILE"; then | |
| echo "UNREGISTERED: $BASE" | |
| UNREGISTERED=$((UNREGISTERED + 1)) | |
| fi | |
| done | |
| echo "Unregistered lenses: $UNREGISTERED" |