Skip to content
99 changes: 99 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -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
Loading