diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e6ceab5..d007141 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -13,7 +13,8 @@ jobs: strategy: matrix: - toolchain: [stable, nightly] + toolchain: ['stable', 'nightly'] + arch: ['x86_64', 'aarch64'] steps: - uses: actions/checkout@v5 @@ -21,9 +22,13 @@ jobs: - run: | rustup update rustup default ${{ matrix.toolchain }} - rustup component add rustfmt ### required for the build script to work ### + rustup target add ${{ matrix.arch }}-unknown-linux-gnu + rustup component add rustfmt ### required for the build script to work ### + [ "${{ matrix.arch }}" = 'aarch64' ] && sudo apt update && sudo apt install -y g++-aarch64-linux-gnu || : - name: check fails without MUJOCO_DIR + env: + CARGO_BUILD_TARGET: ${{ matrix.arch }}-unknown-linux-gnu run: | if cargo build; then echo 'cargo check succeeded without mujoco, which is unexpected.' @@ -36,12 +41,14 @@ jobs: run: | mkdir -p $HOME/.mujoco cd $HOME/.mujoco - wget https://github.com/google-deepmind/mujoco/releases/download/3.3.2/mujoco-3.3.2-linux-x86_64.tar.gz - tar -xzf mujoco-3.3.2-linux-x86_64.tar.gz + wget https://github.com/google-deepmind/mujoco/releases/download/3.3.2/mujoco-3.3.2-linux-${{ matrix.arch }}.tar.gz + tar -xzf mujoco-3.3.2-linux-${{ matrix.arch }}.tar.gz echo "MUJOCO_DIR=$HOME/.mujoco/mujoco-3.3.2" >> $GITHUB_ENV echo "LD_LIBRARY_PATH=$HOME/.mujoco/mujoco-3.3.2/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV - name: check succeeds with MUJOCO_DIR + env: + CARGO_BUILD_TARGET: ${{ matrix.arch }}-unknown-linux-gnu run: | if cargo build; then echo 'cargo check succeeded with mujoco, as expected.' @@ -50,36 +57,44 @@ jobs: echo "[DEBUG] bindgen.rs content:" && cat ./src/bindgen.rs exit 1 fi - + test: - runs-on: ubuntu-latest - strategy: matrix: - toolchain: [stable, nightly] - + toolchain: ['stable', 'nightly'] + os: ['ubuntu-24.04', 'ubuntu-24.04-arm'] + + runs-on: ${{ matrix.os }} + steps: - - uses: actions/checkout@v4 - - - name: setup + - uses: actions/checkout@v5 + + - name: setup Rust run: | rustup update rustup default ${{ matrix.toolchain }} - rustup component add rustfmt ### required for the build script to work ### - mkdir -p $HOME/.mujoco - cd $HOME/.mujoco - wget https://github.com/google-deepmind/mujoco/releases/download/3.3.2/mujoco-3.3.2-linux-x86_64.tar.gz - tar -xzf mujoco-3.3.2-linux-x86_64.tar.gz + rustup component add rustfmt ### required for the build script to work ### + + - name: setup MuJoCo + run: | + if [ "${{ matrix.os }}" = 'ubuntu-24.04' ]; then + MUJOCO_FILENAME='mujoco-3.3.2-linux-x86_64.tar.gz' + elif [ "${{ matrix.os }}" = 'ubuntu-24.04-arm' ]; then + MUJOCO_FILENAME='mujoco-3.3.2-linux-aarch64.tar.gz' + fi + mkdir -p $HOME/.mujoco && cd $HOME/.mujoco + wget https://github.com/google-deepmind/mujoco/releases/download/3.3.2/$MUJOCO_FILENAME + tar -xzf $MUJOCO_FILENAME echo "MUJOCO_DIR=$HOME/.mujoco/mujoco-3.3.2" >> $GITHUB_ENV echo "LD_LIBRARY_PATH=$HOME/.mujoco/mujoco-3.3.2/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV - + - name: setup additional dependencies for examples run: | - sudo apt update && sudo apt install -y cmake build-essential libwayland-dev libxkbcommon-x11-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev git clone https://github.com/glfw/glfw.git mkdir -p glfw/build && cd glfw/build + sudo apt update && sudo apt install -y cmake build-essential libwayland-dev libxkbcommon-x11-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev cmake .. && make && sudo make install - + - name: run tests run: | cargo test --lib