mirror of
https://github.com/serai-dex/serai.git
synced 2024-10-31 17:37:38 +00:00
200 lines
5.3 KiB
YAML
200 lines
5.3 KiB
YAML
|
name: Tests
|
||
|
|
||
|
on:
|
||
|
push:
|
||
|
branches:
|
||
|
- develop
|
||
|
pull_request:
|
||
|
|
||
|
jobs:
|
||
|
build:
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: "recursive"
|
||
|
|
||
|
- name: Install solc
|
||
|
run: |
|
||
|
pip3 install solc-select
|
||
|
solc-select install 0.8.9
|
||
|
solc-select use 0.8.9
|
||
|
|
||
|
- name: Install Monero Dependencies
|
||
|
run: |
|
||
|
sudo apt update
|
||
|
sudo apt install build-essential cmake pkg-config libboost-all-dev \
|
||
|
libssl-dev libzmq3-dev libpgm-dev libunbound-dev \
|
||
|
libsodium-dev ccache
|
||
|
|
||
|
- name: Install Rust
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: stable
|
||
|
profile: minimal
|
||
|
default: true
|
||
|
|
||
|
- name: Install WASM toolchain
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: nightly
|
||
|
profile: minimal
|
||
|
target: wasm32-unknown-unknown
|
||
|
|
||
|
# Cache everything, not only for performance, yet to export these to the
|
||
|
# following jobs
|
||
|
- name: Monero cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
./coins/monero/c/.build
|
||
|
./coins/monero/c/monero/build
|
||
|
# Hash src, as theoretically, a different version of Monero warranting
|
||
|
# a rebuild would've changed *something* under src
|
||
|
key: ${{ runner.os }}-${{ hashFiles('./coins/monero/c/monero/src') }}
|
||
|
|
||
|
- name: Cargo/Rust cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
~/.cargo
|
||
|
./target
|
||
|
key: ${{ runner.os }}-cargo-rust
|
||
|
|
||
|
- name: Build
|
||
|
run: ARCH=default cargo build --all-features
|
||
|
|
||
|
# Mirror the build job for Clippy
|
||
|
clippy:
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: "recursive"
|
||
|
|
||
|
- name: Install solc
|
||
|
run: |
|
||
|
pip3 install solc-select
|
||
|
solc-select install 0.8.9
|
||
|
solc-select use 0.8.9
|
||
|
|
||
|
- name: Install Monero Dependencies
|
||
|
run: |
|
||
|
sudo apt update
|
||
|
sudo apt install build-essential cmake pkg-config libboost-all-dev \
|
||
|
libssl-dev libzmq3-dev libpgm-dev libunbound-dev \
|
||
|
libsodium-dev ccache
|
||
|
|
||
|
- name: Install Rust
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
# Clippy requires nightly for some reason
|
||
|
toolchain: nightly
|
||
|
profile: minimal
|
||
|
default: true
|
||
|
components: clippy
|
||
|
|
||
|
- name: Install WASM toolchain
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: nightly
|
||
|
profile: minimal
|
||
|
target: wasm32-unknown-unknown
|
||
|
|
||
|
# Grab the Monero cache since it'll be unaffected by Rust versioning
|
||
|
- name: Monero cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
./coins/monero/c/.build
|
||
|
./coins/monero/c/monero/build
|
||
|
key: ${{ runner.os }}-${{ hashFiles('./coins/monero/c/monero/src') }}
|
||
|
|
||
|
# Define a separate cache for nightly Rust
|
||
|
- name: Cargo/Rust nightly cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
~/.cargo
|
||
|
./target
|
||
|
key: ${{ runner.os }}-cargo-rust-nightly
|
||
|
|
||
|
- name: Run Clippy
|
||
|
run: cargo clippy --all-features -- -D warnings -A clippy::type_complexity -A dead_code
|
||
|
|
||
|
test:
|
||
|
runs-on: ubuntu-latest
|
||
|
needs: build
|
||
|
steps:
|
||
|
- uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: "recursive"
|
||
|
|
||
|
- name: Install solc
|
||
|
run: |
|
||
|
pip3 install solc-select
|
||
|
solc-select install 0.8.9
|
||
|
solc-select use 0.8.9
|
||
|
|
||
|
- name: Install Foundry
|
||
|
uses: foundry-rs/foundry-toolchain@v1
|
||
|
with:
|
||
|
version: nightly
|
||
|
|
||
|
- name: Install Monero Dependencies
|
||
|
run: |
|
||
|
sudo apt update
|
||
|
sudo apt install libboost-all-dev libssl-dev libzmq3-dev libpgm-dev \
|
||
|
libunbound-dev libsodium-dev
|
||
|
|
||
|
- name: Install Rust
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: stable
|
||
|
profile: minimal
|
||
|
default: true
|
||
|
|
||
|
- name: Install WASM toolchain
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: nightly
|
||
|
profile: minimal
|
||
|
target: wasm32-unknown-unknown
|
||
|
|
||
|
- name: Monero cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
./coins/monero/c/.build
|
||
|
./coins/monero/c/monero/build
|
||
|
key: ${{ runner.os }}-${{ hashFiles('./coins/monero/c/monero/src') }}
|
||
|
|
||
|
- name: Cargo/Rust cache
|
||
|
uses: actions/cache@v3
|
||
|
with:
|
||
|
path: |
|
||
|
~/.cargo
|
||
|
./target
|
||
|
key: ${{ runner.os }}-cargo-rust
|
||
|
|
||
|
- name: Monero Regtest Daemon
|
||
|
run: ./coins/monero/c/monero/build/release/bin/monerod --regtest --offline --fixed-difficulty=1 --detach
|
||
|
|
||
|
- name: Run tests
|
||
|
run: cargo test --all-features
|
||
|
|
||
|
fmt:
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- uses: actions/checkout@v3
|
||
|
|
||
|
- name: Install rustfmt
|
||
|
uses: actions-rs/toolchain@v1
|
||
|
with:
|
||
|
toolchain: nightly
|
||
|
profile: minimal
|
||
|
components: rustfmt
|
||
|
|
||
|
- name: Run rustfmt
|
||
|
run: cargo +nightly fmt -- --check
|