sonic-server 1.5.1

Fast, lightweight and schema-less search backend.
on:
  push:
    tags:
      - "v*.*.*"

name: Build and Release

jobs:
  build-releases:
    runs-on: ubuntu-22.04

    steps:
      - name: Checkout code
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Cache build artifacts
        id: cache-cargo
        uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
        with:
          path: |
            ~/.cargo/bin
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: build-${{ runner.os }}-cargo-any

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 # master on 2026-05-14
        with:
          toolchain: stable

      - name: Verify versions
        run: |-
          rustc --version
          rustup --version 2>/dev/null
          cargo --version

      - name: Get current tag
        id: current_tag
        uses: WyriHaximus/github-action-get-previous-tag@61819f33034117e6c686e6a31dba995a85afc9de # v2.0.0

      - name: Release package
        run: cargo publish --no-verify
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }}

      - name: Release binaries
        run: ./scripts/release_binaries.sh --version=${{ steps.current_tag.outputs.tag }}

      - name: Release new version
        uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
        with:
          tag_name: ${{ steps.current_tag.outputs.tag }}
          name: Sonic ${{ steps.current_tag.outputs.tag }}
          body: "⚠️ Changelog not yet provided."
          files: ./${{ steps.current_tag.outputs.tag }}-*.tar.gz
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  build-packages:
    needs: build-releases
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Build packages
        run: ./scripts/build_packages.sh

      - name: Push packages to Packagecloud
        uses: faucetsdn/action-packagecloud-upload-debian-packages@89b1e7201d7f9df94e3f360d9cb77134dd5ffc05 # v1
        with:
          path: ./packages
          repo: ${{ secrets.PACKAGECLOUD_REPO }}
          token: ${{ secrets.PACKAGECLOUD_TOKEN }}

  build-docker:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Acquire Docker image metadata
        id: metadata
        uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
        with:
          images: valeriansaliou/sonic

      - name: Login to Docker Hub
        uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push Docker image
        uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
        id: build
        with:
          context: .
          tags: ${{ steps.metadata.outputs.tags }}
          labels: ${{ steps.metadata.outputs.labels }}
          push: true