name: ci-multi-platform on: pull_request: push: branches: - main schedule: - cron: '00 01 * * *' jobs: test: name: test env: # For some builds, we use cross to test on 32-bit and big-endian # systems. CARGO: cargo # When CARGO is set to CROSS, this is set to `--target matrix.target`. TARGET_FLAGS: "" # When CARGO is set to CROSS, TARGET_DIR includes matrix.target. TARGET_DIR: ./target # Emit backtraces on panics. RUST_BACKTRACE: 1 runs-on: ${{ matrix.os }} strategy: matrix: build: - pinned - stable - beta - nightly - nightly-musl - nightly-32 - nightly-mips - nightly-arm - macos - win-msvc - win-gnu include: - build: pinned os: ubuntu-22.04 rust: 1.65.0 - build: stable os: ubuntu-22.04 rust: stable - build: beta os: ubuntu-22.04 rust: beta - build: nightly os: ubuntu-22.04 rust: nightly - build: nightly-musl os: ubuntu-22.04 rust: nightly target: x86_64-unknown-linux-musl - build: nightly-32 os: ubuntu-22.04 rust: nightly target: i686-unknown-linux-gnu - build: nightly-mips os: ubuntu-22.04 rust: nightly target: mips64-unknown-linux-gnuabi64 - build: nightly-arm os: ubuntu-22.04 rust: nightly target: arm-unknown-linux-gnueabihf - build: macos os: macos-12 rust: nightly - build: win-msvc os: windows-2022 rust: nightly - build: win-gnu os: windows-2022 rust: nightly-x86_64-gnu steps: - name: Checkout repository uses: actions/checkout@v3 #- name: Install packages (Ubuntu) # if: matrix.os == 'ubuntu-22.04' # run: | # ci/ubuntu-install-packages #- name: Install packages (macOS) # if: matrix.os == 'macos-12' # run: | # ci/macos-install-packages - name: Install Rust uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - name: Use Cross if: matrix.target != '' run: | cargo install cross echo "CARGO=cross" >> $GITHUB_ENV echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV - name: Show command used for Cargo run: | echo "cargo command is: ${{ env.CARGO }}" echo "target flag is: ${{ env.TARGET_FLAGS }}" - name: Build all crates run: ${{ env.CARGO }} build --verbose --workspace ${{ env.TARGET_FLAGS }} # This is useful for debugging problems when the expected build artifacts # (like shell completions and man pages) aren't generated. - name: Run tests # These tests should actually work, but they almost double the runtime. # Every integration test spins up qemu to run 'rg', and when PCRE2 is # enabled, every integration test is run twice: one with the default # regex engine and once with PCRE2. if: matrix.target != '' run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }}