Some checks failed
Build and Test / Build Server (Linux) (push) Failing after 4m6s
Build and Test / Build Agent (Windows) (push) Failing after 7m4s
Build and Test / Security Audit (push) Failing after 5m1s
Build and Test / Build Summary (push) Has been skipped
Run Tests / Test Server (push) Failing after 3m11s
Run Tests / Test Agent (push) Failing after 2m39s
Run Tests / Code Coverage (push) Has started running
Run Tests / Lint and Format Check (push) Has been cancelled
.cargo/config.toml defaults to x86_64-pc-windows-msvc for local Windows dev, which made the CI clippy/test steps (no explicit --target) try to compile for an uninstalled cross target (E0463 can't find crate for core). Set CARGO_BUILD_TARGET=x86_64-unknown-linux-gnu for the build-server job. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
157 lines
4.5 KiB
YAML
157 lines
4.5 KiB
YAML
name: Build and Test
|
|
|
|
# PR/push CI gate (SPEC-001): fmt, clippy -D warnings, build, test, cargo-audit.
|
|
# This workflow does NOT version, sign, or release — that is release.yml's job. The agent build
|
|
# here is a compile gate only (it produces an unsigned artifact for inspection). Release commits
|
|
# carry `[skip ci]` so this workflow does not re-run on the version-bump commit.
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- develop
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build-server:
|
|
name: Build Server (Linux)
|
|
runs-on: ubuntu-latest
|
|
# .cargo/config.toml defaults to the windows-msvc target for local Windows dev.
|
|
# On the Linux runner, force the host target so clippy/test (which do not pass
|
|
# an explicit --target) build for Linux instead of an uninstalled cross target.
|
|
env:
|
|
CARGO_BUILD_TARGET: x86_64-unknown-linux-gnu
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: x86_64-unknown-linux-gnu
|
|
override: true
|
|
components: rustfmt, clippy
|
|
|
|
- name: Cache Cargo dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-server-${{ hashFiles('server/Cargo.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-cargo-server-
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y pkg-config libssl-dev protobuf-compiler
|
|
|
|
- name: Check formatting
|
|
run: cd server && cargo fmt --all -- --check
|
|
|
|
- name: Run Clippy
|
|
run: cd server && cargo clippy --all-targets --all-features -- -D warnings
|
|
|
|
- name: Build server
|
|
run: |
|
|
cd server
|
|
cargo build --release --target x86_64-unknown-linux-gnu
|
|
|
|
- name: Run tests
|
|
run: |
|
|
cd server
|
|
cargo test --release
|
|
|
|
- name: Upload server binary
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: guruconnect-server-linux
|
|
path: server/target/x86_64-unknown-linux-gnu/release/guruconnect-server
|
|
retention-days: 30
|
|
|
|
build-agent:
|
|
name: Build Agent (Windows)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
# Single source of truth for the Windows target used by the build below.
|
|
target: x86_64-pc-windows-gnu
|
|
override: true
|
|
|
|
- name: Install cross-compilation tools
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y mingw-w64
|
|
|
|
- name: Cache Cargo dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-agent-${{ hashFiles('agent/Cargo.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-cargo-agent-
|
|
|
|
- name: Build agent (cross-compile for Windows)
|
|
run: |
|
|
# Target is installed by the toolchain step above (single source of truth).
|
|
cd agent
|
|
cargo build --release --target x86_64-pc-windows-gnu
|
|
|
|
- name: Upload agent binary
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: guruconnect-agent-windows
|
|
path: agent/target/x86_64-pc-windows-gnu/release/guruconnect.exe
|
|
retention-days: 30
|
|
|
|
security-audit:
|
|
name: Security Audit
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
|
|
- name: Install cargo-audit
|
|
run: cargo install cargo-audit
|
|
|
|
- name: Run security audit on server
|
|
run: cd server && cargo audit
|
|
|
|
- name: Run security audit on agent
|
|
run: cd agent && cargo audit
|
|
|
|
build-summary:
|
|
name: Build Summary
|
|
runs-on: ubuntu-latest
|
|
needs: [build-server, build-agent, security-audit]
|
|
steps:
|
|
- name: Build succeeded
|
|
run: |
|
|
echo "All builds completed successfully"
|
|
echo "Server: Linux x86_64"
|
|
echo "Agent: Windows x86_64"
|
|
echo "Security: Passed"
|