Skip to content

neeed improve on the signal generator to identify alphas #7

neeed improve on the signal generator to identify alphas

neeed improve on the signal generator to identify alphas #7

Workflow file for this run

name: Rust Trading System CI/CD
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check:
name: Code Quality Checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
components: rustfmt, clippy
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Check formatting
run: cargo fmt --all -- --check
- name: Run clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Check documentation
run: cargo doc --no-deps --all-features
test:
name: Test Suite
runs-on: ubuntu-latest
strategy:
matrix:
rust: [stable, nightly]
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ matrix.rust }}
- name: Install ZeroMQ dependencies
run: |
sudo apt-get update
sudo apt-get install -y libzmq3-dev pkg-config
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target/
key: ${{ runner.os }}-cargo-build-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-${{ matrix.rust }}-
${{ runner.os }}-cargo-build-
- name: Build all components
run: cargo build --workspace --all-features
- name: Run unit tests
run: cargo test --workspace --lib --all-features
- name: Run integration tests
run: cargo test --workspace --test '*' --all-features
- name: Run doc tests
run: cargo test --workspace --doc --all-features
security:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install cargo-audit
run: cargo install cargo-audit
- name: Run security audit
run: cargo audit
- name: Check for outdated dependencies
run: |
cargo install cargo-outdated
cargo outdated --exit-code 1 || echo "::warning::Outdated dependencies found"
build-release:
name: Build Release Binaries
runs-on: ubuntu-latest
needs: [check, test, security]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install ZeroMQ dependencies
run: |
sudo apt-get update
sudo apt-get install -y libzmq3-dev pkg-config
- name: Build release binaries
run: |
cargo build --release --workspace
env:
RUSTFLAGS: '-C link-arg=-s -C lto=fat -C embed-bitcode=yes'
- name: Strip binaries
run: |
strip target/release/market_data_service || true
strip target/release/order_execution_service || true
strip target/release/risk_management_service || true
strip target/release/strategy_engine || true
strip target/release/api_gateway || true
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: release-binaries
path: |
target/release/market_data_service
target/release/order_execution_service
target/release/risk_management_service
target/release/strategy_engine
target/release/api_gateway
retention-days: 30
docker-build:
name: Build Docker Images
runs-on: ubuntu-latest
needs: [check, test, security]
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch
type=sha,prefix={{branch}}-
type=semver,pattern={{version}}
- name: Build and push Docker images
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install ZeroMQ dependencies
run: |
sudo apt-get update
sudo apt-get install -y libzmq3-dev pkg-config
- name: Install tarpaulin
run: cargo install cargo-tarpaulin
- name: Generate coverage
run: cargo tarpaulin --workspace --all-features --out Xml --timeout 300
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./cobertura.xml
fail_ci_if_error: false