| name: BEX Engine CI |
|
|
| on: |
| push: |
| branches: [main] |
| pull_request: |
| branches: [main] |
|
|
| env: |
| CARGO_TERM_COLOR: always |
|
|
| jobs: |
| build-and-test: |
| runs-on: ubuntu-22.04 |
| steps: |
| - uses: actions/checkout@v4 |
|
|
| - name: Install Rust |
| uses: dtolnay/rust-toolchain@stable |
| with: |
| targets: wasm32-wasip1 |
|
|
| - name: Install wasm-tools |
| run: cargo install wasm-tools-cli --locked |
|
|
| - name: Cache cargo registry |
| uses: actions/cache@v4 |
| with: |
| path: | |
| ~/.cargo/registry |
| ~/.cargo/git |
| target |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} |
|
|
| - name: Build engine |
| run: cargo build --release |
|
|
| - name: Run unit tests |
| run: cargo test --workspace --exclude bex-gogoanime --exclude bex-kaianime --exclude bex-hianime --exclude bex-imdb --exclude bex-kisskh --exclude bex-yts --exclude bex-yflix |
|
|
| - name: Build WASM plugins |
| run: | |
| cargo build --target wasm32-wasip1 --release \ |
| -p bex-gogoanime -p bex-kaianime -p bex-hianime \ |
| -p bex-imdb -p bex-kisskh -p bex-yts -p bex-yflix |
| |
| - name: Pack plugins |
| run: bash build-plugins.sh || true |
|
|
| - name: E2E test |
| run: | |
| chmod +x dist/bex 2>/dev/null || true |
| chmod +x target/release/bex 2>/dev/null || true |
| BEX="./target/release/bex" |
| DATA_DIR="/tmp/bex-ci" |
| rm -rf "$DATA_DIR" && mkdir -p "$DATA_DIR" |
| |
| |
| for bex in dist/*.bex; do |
| [ -f "$bex" ] && $BEX --data-dir "$DATA_DIR" install "$bex" && echo "Installed: $bex" |
| done |
|
|
| |
| $BEX --data-dir "$DATA_DIR" list |
|
|
| |
| $BEX --data-dir "$DATA_DIR" stats |
|
|
| - name: Check GLIBC requirements |
| run: | |
| echo "GLIBC versions required by bex binary:" |
| objdump -T target/release/bex | grep GLIBC_ | sed 's/.*GLIBC_/GLIBC_/' | sort -Vu |
| echo "" |
| echo "System GLIBC:" |
| ldd --version | head -1 |
| |
| - name: Upload artifacts |
| uses: actions/upload-artifact@v4 |
| with: |
| name: bex-linux-x64 |
| path: | |
| target/release/bex |
| target/release/libbex_runtime.so |
| target/release/libbex_runtime.a |
| dist/*.bex |
| |