name: Release on: push: branches: - "feat/additional-build-targets" pull_request: branches: - "main" paths: - ".github/workflows/target-tests.yml" jobs: build: strategy: matrix: name: - linux-x86-64-gnu - linux-x86-64-musl - linux-armhf-gnu - linux-arm64-gnu - mac-x86-64 - mac-arm64 - windows-gnu include: - name: linux-x86-64-gnu os: ubuntu-20.04 target: x86_64-unknown-linux-gnu cross: false experimental: false - name: linux-x86-64-musl os: ubuntu-latest target: x86_64-unknown-linux-musl cross: true experimental: false - name: linux-armhf-gnu os: ubuntu-20.04 target: armv7-unknown-linux-gnueabihf cross: true experimental: false - name: linux-arm64-gnu os: ubuntu-20.04 target: aarch64-unknown-linux-gnu cross: true experimental: false - name: mac-x86-64 os: macos-latest target: x86_64-apple-darwin cross: false experimental: false - name: mac-arm64 os: macos-11.0 target: aarch64-apple-darwin cross: true experimental: true - name: windows-gnu os: windows-latest target: x86_64-pc-windows-gnu cross: true experimental: false name: Binaries for ${{ matrix.name }} runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} steps: - uses: actions/checkout@v4 - uses: actions/cache@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} - uses: actions/cache@v3 if: startsWith(matrix.name, 'linux-') with: path: ~/.cargo/bin key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - uses: taiki-e/setup-cross-toolchain-action@v1 with: # NB: sets CARGO_BUILD_TARGET evar - do not need --target flag in build target: ${{ matrix.target }} - uses: taiki-e/install-action@cross if: ${{ matrix.cross }} - run: sudo apt-get install pkg-config libssl-dev if: startsWith(matrix.name, 'linux-') - run: cargo build --release --locked