name: Rust on: push: pull_request: env: CARGO_TERM_COLOR: always permissions: contents: write defaults: run: # necessary for windows shell: bash jobs: test: if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - 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: if: startsWith(github.ref, 'refs/tags/') strategy: fail-fast: false matrix: 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: bird-looking-glass-proxy TARGET: ${{ matrix.TARGET }} OS: ${{ matrix.OS }} steps: - uses: actions/checkout@v2 - 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 musl-tools fi # some additional configuration for cross-compilation on linux cat >>~/.cargo/config <