Skip to content

Updated macos workflow #267

Updated macos workflow

Updated macos workflow #267

Workflow file for this run

name: rimage
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
name: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- x86_64-apple-darwin
- aarch64-apple-darwin
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
target-apt-arch: amd64
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
target-apt-arch: amd64
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
target-apt-arch: arm64
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
target-apt-arch: arm64
- target: x86_64-pc-windows-msvc
os: windows-latest
- target: i686-pc-windows-msvc
os: windows-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
steps:
- name: Checkout πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Set up Ubuntu multiarch βš™οΈ
if: startsWith(matrix.os, 'ubuntu') && matrix.target-apt-arch != 'amd64'
run: |
readonly DISTRO_CODENAME=jammy
sudo dpkg --add-architecture "${{ matrix.target-apt-arch }}"
sudo sed -i "s/^deb http/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] http/" /etc/apt/sources.list
sudo sed -i "s/^deb mirror/deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH)] mirror/" /etc/apt/sources.list
for suite in '' '-updates' '-backports' '-security'; do
echo "deb [arch=${{ matrix.target-apt-arch }}] http://ports.ubuntu.com/ $DISTRO_CODENAME$suite main universe multiverse" | \
sudo tee -a /etc/apt/sources.list >/dev/null
done
- name: Setup cache πŸ’Ύ
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Setup musl files πŸ§‘β€πŸ’»
if: endsWith(matrix.target, '-musl')
run: |
sudo apt-get -yq update
sudo apt-get -yq install musl-tools musl-dev:${{ matrix.target-apt-arch }}
- name: Setup nasm πŸ§‘β€πŸ’»
uses: ilammy/setup-nasm@v1
- name: Setup ninja/meson πŸ§‘β€πŸ’» (not macos)
if: matrix.os != 'macos-latest'
run: pip install ninja meson
- name: Setup ninja/meson πŸ§‘β€πŸ’» (macos)
if: matrix.os == 'macos-latest'
run: brew install ninja meson
- name: Setup rust toolchain πŸ¦€
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
- name: Build πŸ—
uses: actions-rs/cargo@v1
with:
command: build
args: --all-features --release
- name: Test πŸ§ͺ
if: matrix.target != 'aarch64-apple-darwin'
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --release
lint:
name: lint
runs-on: ubuntu-latest
steps:
- name: Checkout πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Setup cache πŸ’Ύ
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Setup nasm πŸ§‘β€πŸ’»
uses: ilammy/setup-nasm@v1
- name: Setup rust toolchain πŸ¦€
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: rustfmt, clippy
- name: Formatting check πŸͺ„
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Clippy check πŸ”Ž
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features -- -D warnings