mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-30 17:14:59 +08:00
a5e23aa6e4
This is to prevent linking with a version of glibc that is too recent. With meilisearch v0.29.0 we inadvertently bumped the minimum supported glibc version to 2.29, which means it couldn't be run from Debian 10 (for example) anymore. By using Ubuntu 18.04, which uses glibc 2.27, we restore support for older Linux distros.
132 lines
4.0 KiB
YAML
132 lines
4.0 KiB
YAML
on:
|
|
release:
|
|
types: [published]
|
|
|
|
name: Publish binaries to release
|
|
|
|
jobs:
|
|
check-version:
|
|
name: Check the version validity
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
# Check if the tag has the v<nmumber>.<number>.<number> format.
|
|
# If yes, it means we are publishing an official release.
|
|
# If no, we are releasing a RC, so no need to check the version.
|
|
- name: Check tag format
|
|
if: github.event_name != 'schedule'
|
|
id: check-tag-format
|
|
run: |
|
|
escaped_tag=$(printf "%q" ${{ github.ref_name }})
|
|
|
|
if [[ $escaped_tag =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
echo ::set-output name=stable::true
|
|
else
|
|
echo ::set-output name=stable::false
|
|
fi
|
|
- name: Check release validity
|
|
if: steps.check-tag-format.outputs.stable == 'true'
|
|
run: bash .github/scripts/check-release.sh
|
|
|
|
publish:
|
|
name: Publish binary for ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
needs: check-version
|
|
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@v3
|
|
- 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 }}
|
|
needs: check-version
|
|
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@v3
|
|
|
|
- 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 }}
|