name: test on: workflow_dispatch: push: branches: [main] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: testbed: strategy: matrix: repo: - { name: simple, key: simple, parallel: 8 } - { name: mmaitre314/picklescan, key: picklescan, parallel: 8 } - { name: huggingface/huggingface_hub, key: huggingface_hub, parallel: 8 } - { name: tiangolo/fastapi, key: fastapi, parallel: 8 } - { name: encode/starlette, key: starlette, parallel: 8 } - { name: lancedb/lancedb, key: lancedb, parallel: 2 } - { name: lancedb/lance, key: lance, parallel: 2 } - { name: tkaitchuck/constrandom, key: constrandom, parallel: 8 } - { name: jaemk/cached, key: cached, parallel: 4 } - { name: smol-rs/async-executor, key: async-executor, parallel: 4 } - { name: gcanti/io-ts, key: io-ts, parallel: 8 } - { name: colinhacks/zod, key: zod, parallel: 8 } - { name: helix-editor/helix, key: helix, parallel: 2 } runs-on: [self-hosted, intel-cpu, 8-cpu, ci] container: image: ubuntu:22.04 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install dependencies run: | apt update DEBIAN_FRONTEND=noninteractive apt install -y pkg-config protobuf-compiler libssl-dev curl build-essential git-all gfortran - name: Install Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: rustflags: '' toolchain: nightly - name: Install Python 3.10 uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install node 18 uses: actions/setup-node@v3 with: node-version: 18 - name: Install yarn run: | npm i -g yarn - name: Set up cargo cache uses: actions/cache@v3 continue-on-error: false with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} - name: Build project run: cargo build -r - name: Run testbed run: 'cargo run --bin testbed -r -- --api-token $API_TOKEN -r `pwd`/crates/testbed/repositories-ci.yaml -f ${{ matrix.repo.name }} -p ${{ matrix.repo.parallel }}' if: github.event_name == 'push' || github.event_name == 'pull_request' env: API_TOKEN: ${{ secrets.API_TOKEN }} - name: Run testbed run: 'cargo run --bin testbed -r -- --api-token $API_TOKEN -f ${{ matrix.repo.name }} -p ${{ matrix.repo.parallel }}' if: github.event_name == 'workflow_dispatch' env: API_TOKEN: ${{ secrets.API_TOKEN }} - name: Upload artifacts uses: actions/upload-artifact@v1 with: name: results-${{ matrix.repo.key }} path: ./results.json comment_results: needs: [testbed] runs-on: [self-hosted, intel-cpu, 8-cpu, ci] container: image: ubuntu:22.04 steps: - name: Install dependencies run: | apt update apt install -y jq - uses: actions/download-artifact@v1 with: name: results-simple path: results-simple - uses: actions/download-artifact@v1 with: name: results-picklescan path: results-picklescan - uses: actions/download-artifact@v1 with: name: results-huggingface_hub path: results-huggingface_hub - uses: actions/download-artifact@v1 with: name: results-fastapi path: results-fastapi - uses: actions/download-artifact@v1 with: name: results-starlette path: results-starlette - uses: actions/download-artifact@v1 with: name: results-lancedb path: results-lancedb - uses: actions/download-artifact@v1 with: name: results-lance path: results-lance - uses: actions/download-artifact@v1 with: name: results-constrandom path: results-constrandom - uses: actions/download-artifact@v1 with: name: results-cached path: results-cached - uses: actions/download-artifact@v1 with: name: results-async-executor path: results-async-executor - uses: actions/download-artifact@v1 with: name: results-io-ts path: results-io-ts - uses: actions/download-artifact@v1 with: name: results-zod path: results-zod - uses: actions/download-artifact@v1 with: name: results-helix path: results-helix - name: Display structure of downloaded files run: ls -R - name: output to markdown run: | cat > results.md <> results.md cat >> results.md <