name: Rust on: push: pull_request: env: CARGO_TERM_COLOR: always defaults: run: # necessary for windows shell: bash jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Init submodules uses: snickerbockers/submodules-init@v4 - name: Cargo cache uses: actions/cache@v2 with: path: | ~/.cargo/registry ./target key: test-cargo-registry - name: List run: find ./ - name: Run tests run: cargo test --verbose build: strategy: fail-fast: false matrix: # a list of all the targets include: - TARGET: x86_64-unknown-linux-gnu # tested in a debian container on a mac OS: ubuntu-latest - TARGET: x86_64-unknown-linux-musl # test in an alpine container on a mac OS: ubuntu-latest - TARGET: aarch64-unknown-linux-gnu # tested on aws t4g.nano OS: ubuntu-latest - TARGET: aarch64-unknown-linux-musl # tested on aws t4g.nano in alpine container OS: ubuntu-latest - TARGET: armv7-unknown-linux-gnueabihf # raspberry pi 2-3-4, not tested OS: ubuntu-latest - TARGET: armv7-unknown-linux-musleabihf # raspberry pi 2-3-4, not tested OS: ubuntu-latest - TARGET: arm-unknown-linux-gnueabihf # raspberry pi 0-1, not tested OS: ubuntu-latest - TARGET: arm-unknown-linux-musleabihf # raspberry pi 0-1, not tested OS: ubuntu-latest - TARGET: x86_64-apple-darwin # tested on a mac, is not properly signed so there are security warnings OS: macos-latest - TARGET: x86_64-pc-windows-msvc # tested on a windows machine OS: windows-latest # needs: test runs-on: ${{ matrix.OS }} env: NAME: switch-desktop # change with the name of your project TARGET: ${{ matrix.TARGET }} OS: ${{ matrix.OS }} steps: - uses: actions/checkout@v2 - name: Init submodules uses: snickerbockers/submodules-init@v4 - name: Cargo cache uses: actions/cache@v2 with: path: | ~/.cargo/registry ./target key: build-cargo-registry-${{matrix.TARGET}} - name: List run: find ./ - name: Install and configure dependencies run: | # dependencies are only needed on ubuntu as that's the only place where # we make cross-compilation if [[ $OS =~ ^ubuntu.*$ ]]; then sudo apt-get install -qq crossbuild-essential-arm64 crossbuild-essential-armhf fi # some additional configuration for cross-compilation on linux cat >>~/.cargo/config <