Skip to content

chore: add .claude directory to .gitignore #1

chore: add .claude directory to .gitignore

chore: add .claude directory to .gitignore #1

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
pre-commit:
name: Pre-commit Checks
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install pre-commit
run: |
pip install pre-commit detect-secrets
pre-commit --version
- name: Create secrets baseline if missing
run: |
if [ ! -f .secrets.baseline ]; then
echo "Creating .secrets.baseline"
detect-secrets scan --baseline .secrets.baseline
fi
- name: Run pre-commit hooks
run: pre-commit run --all-files --show-diff-on-failure
test:
name: Test Suite
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust: [stable]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --all-features --workspace
- name: Run doc tests
run: cargo test --doc --all-features --workspace
build:
name: Build & Verify
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: x86_64-apple-darwin
os: macos-13
- target: aarch64-apple-darwin
os: macos-14
- target: x86_64-pc-windows-msvc
os: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Build binary
run: cargo build --release --target ${{ matrix.target }} --package template-mcp-server
- name: Verify binary is executable (Unix)
if: runner.os != 'Windows'
run: |
BINARY="target/${{ matrix.target }}/release/template-mcp-server"
chmod +x "$BINARY"
file "$BINARY"
# Just verify it exists and is executable, don't run it
# (running might require config files that don't exist in CI)
ls -lh "$BINARY"
echo "✓ Binary built successfully and is executable"
- name: Verify binary exists (Windows)
if: runner.os == 'Windows'
run: |
$BINARY = "target/${{ matrix.target }}/release/template-mcp-server.exe"
if (Test-Path $BINARY) {
Get-Item $BINARY | Format-List
Write-Host "✓ Binary built successfully"
} else {
Write-Error "Binary not found at $BINARY"
exit 1
}
clippy:
name: Clippy Lints
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Run clippy
run: cargo clippy --all-targets --all-features --workspace -- -D warnings
format:
name: Formatting Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
security:
name: Security Audit
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Install cargo-audit
run: cargo install cargo-audit
- name: Run security audit
run: cargo audit
validation:
name: Template Validation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run validation script
run: |
chmod +x scripts/validate.sh
./scripts/validate.sh || echo "⚠️ Template not initialized (expected for template repo)"