mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-23 05:14:27 +01:00
dc93853946
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.
139 lines
4.3 KiB
YAML
139 lines
4.3 KiB
YAML
on:
|
|
schedule:
|
|
- cron: '0 2 * * *' # Every day at 2:00am
|
|
release:
|
|
types: [published]
|
|
|
|
name: Publish binaries to release
|
|
|
|
jobs:
|
|
check-version:
|
|
name: Check the version validity
|
|
runs-on: ubuntu-latest
|
|
# No need to check the version for dry run (cron)
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
# 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: github.event_name != 'schedule' && 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
|
|
# No need to upload binaries for dry run (cron)
|
|
- name: Upload binaries to release
|
|
if: github.event_name != 'schedule'
|
|
uses: svenstaro/upload-release-action@v1-release
|
|
with:
|
|
repo_token: ${{ secrets.MEILI_BOT_GH_PAT }}
|
|
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
|
|
# No need to upload binaries for dry run (cron)
|
|
if: github.event_name != 'schedule'
|
|
uses: svenstaro/upload-release-action@v1-release
|
|
with:
|
|
repo_token: ${{ secrets.MEILI_BOT_GH_PAT }}
|
|
file: target/${{ matrix.target }}/release/meilisearch
|
|
asset_name: ${{ matrix.asset_name }}
|
|
tag: ${{ github.ref }}
|