on: release: types: [published] name: Publish binaries to release jobs: publish: name: Publish binary for ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-18.04, macos-latest, windows-latest] include: - os: ubuntu-18.04 artifact_name: meilisearch asset_name: meilisearch-linux-amd64 - os: macos-latest artifact_name: meilisearch asset_name: meilisearch-macos-amd64 - os: windows-latest artifact_name: meilisearch.exe asset_name: meilisearch-windows-amd64.exe steps: - uses: hecrj/setup-rust-action@master with: rust-version: stable - uses: actions/checkout@v2 - name: Build run: cargo build --release --locked - name: Upload binaries to release uses: svenstaro/upload-release-action@v1-release with: repo_token: ${{ secrets.PUBLISH_TOKEN }} file: target/release/${{ matrix.artifact_name }} asset_name: ${{ matrix.asset_name }} tag: ${{ github.ref }} publish-aarch64: name: Publish binary for aarch64 runs-on: ${{ matrix.os }} continue-on-error: false strategy: fail-fast: false matrix: include: - build: aarch64 os: ubuntu-18.04 target: aarch64-unknown-linux-gnu linker: gcc-aarch64-linux-gnu use-cross: true asset_name: meilisearch-linux-aarch64 steps: - name: Checkout repository uses: actions/checkout@v2 - name: Installing Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal target: ${{ matrix.target }} override: true - name: APT update run: | sudo apt update - name: Install target specific tools if: matrix.use-cross run: | sudo apt-get install -y ${{ matrix.linker }} - name: Configure target aarch64 GNU if: matrix.target == 'aarch64-unknown-linux-gnu' ## Environment variable is not passed using env: ## LD gold won't work with MUSL # env: # JEMALLOC_SYS_WITH_LG_PAGE: 16 # RUSTFLAGS: '-Clink-arg=-fuse-ld=gold' run: | echo '[target.aarch64-unknown-linux-gnu]' >> ~/.cargo/config echo 'linker = "aarch64-linux-gnu-gcc"' >> ~/.cargo/config echo 'JEMALLOC_SYS_WITH_LG_PAGE=16' >> $GITHUB_ENV echo RUSTFLAGS="-Clink-arg=-fuse-ld=gold" >> $GITHUB_ENV - name: Cargo build uses: actions-rs/cargo@v1 with: command: build use-cross: ${{ matrix.use-cross }} args: --release --target ${{ matrix.target }} - name: List target output files run: ls -lR ./target - name: Upload the binary to release uses: svenstaro/upload-release-action@v1-release with: repo_token: ${{ secrets.PUBLISH_TOKEN }} file: target/${{ matrix.target }}/release/meilisearch asset_name: ${{ matrix.asset_name }} tag: ${{ github.ref }}