diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..7b7f98a --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,99 @@ +name: Magic Router Build + +on: + pull_request: + branches: [ "master" ] + +env: + solana_version: v1.18.25 + +jobs: + install: + runs-on: ubuntu-latest + container: + image: rust:latest + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + name: cache solana cli + id: cache-solana + with: + path: | + ~/.cache/solana/ + ~/.local/share/solana/ + key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} + + - name: install solana + if: steps.cache-solana.outputs.cache-hit != 'true' + run: | + sh -c "$(curl -sSfL https://release.solana.com/${{ env.solana_version }}/install)" + export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" + solana --version + + + rust-checks: + runs-on: ubuntu-latest + container: + image: rust:latest + + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/ + target/debug + key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo-debug- + - name: Install rustfmt and clippy + run: rustup component add rustfmt clippy + - name: Run rustfmt + run: cargo fmt --check + - name: Run clippy + run: cargo clippy -- -D warnings + + test-and-build: + runs-on: ubuntu-latest + container: + image: rust:latest + + needs: + - rust-checks + - install + + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/ + target/debug + key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo-debug- + - uses: actions/cache@v4 + with: + path: | + target/release + target/sbf-solana-solana + key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} + - uses: actions/cache@v4 + name: cache solana cli + id: cache-solana + with: + path: | + ~/.cache/solana/ + ~/.local/share/solana/ + key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} + - name: setup solana + run: | + export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" + solana --version + + - name: Build shared object + run: | + export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" + cargo build-sbf -- -Znext-lockfile-bump + - name: Run tests + run: cargo test