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