name: Build Code on: push: branches: - '*' - '!staging.tmp' tags: - '*' schedule: - cron: '40 3 * * *' # every day at 3:40 pull_request: jobs: test: name: "Test" strategy: matrix: platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} timeout-minutes: 15 steps: - name: "Checkout Repository" uses: actions/checkout@v1 - name: Install Rustup run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly echo ::add-path::$HOME/.cargo/bin if: runner.os == 'macOS' - name: "Print Rust Version" run: | rustc -Vv cargo -Vv - name: "Add thumbv7em-none-eabihf Target" run: rustup target add thumbv7em-none-eabihf - name: "Build for thumbv7em-none-eabihf" run: cargo build --target thumbv7em-none-eabihf - name: "Build for Linux" if: runner.os == 'Linux' run: cargo rustc -- -C link-arg=-nostartfiles - name: "Build for macOS" if: runner.os == 'macOS' run: cargo rustc -- -C link-args="-e __start -static -nostartfiles" - name: "Build for Windows" if: runner.os == 'Windows' run: cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console" check_formatting: name: "Check Formatting" runs-on: ubuntu-latest timeout-minutes: 2 steps: - uses: actions/checkout@v1 - name: "Use the latest Rust nightly with rustfmt" uses: actions-rs/toolchain@v1 with: toolchain: nightly profile: minimal components: rustfmt override: true - run: cargo fmt -- --check