name: Publish binaries to GitHub release

on:
  push:
    tags:
      - '*'

jobs:
  publish:
    name: Publish for ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: ubuntu-latest
            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@v1
    - 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-armv7:
    name: Publish for ARMv7
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v1.0.0
      - uses: uraimo/run-on-arch-action@v1.0.7
        id: runcmd
        with:
          architecture: armv7
          distribution: ubuntu18.04
          run: |
            apt update
            apt install -y curl gcc make
            curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
            source $HOME/.cargo/env
            cargo build --release --locked
      - name: Upload the binary to release
        uses: svenstaro/upload-release-action@v1-release
        with:
          repo_token: ${{ secrets.PUBLISH_TOKEN }}
          file: target/release/meilisearch
          asset_name: meilisearch-linux-armv7
          tag: ${{ github.ref }}

  publish-armv8:
    name: Publish for ARMv8
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v1.0.0
      - uses: uraimo/run-on-arch-action@v1.0.7
        id: runcmd
        with:
          architecture: aarch64 # aka ARMv8
          distribution: ubuntu18.04
          run: |
            apt update
            apt install -y curl gcc make
            curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
            source $HOME/.cargo/env
            cargo build --release --locked
      - name: Upload the binary to release
        uses: svenstaro/upload-release-action@v1-release
        with:
          repo_token: ${{ secrets.PUBLISH_TOKEN }}
          file: target/release/meilisearch
          asset_name: meilisearch-linux-armv8
          tag: ${{ github.ref }}
