neeed improve on the signal generator to identify alphas #7
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: 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 |