name: Build and Release on: push permissions: contents: write concurrency: group: ci-releases-${{ github.head_ref || github.ref }}-${{ github.repository }} cancel-in-progress: true jobs: build-linux: strategy: matrix: include: - build: 'avx2' defines: '' - build: 'avx' defines: '-DLLAMA_AVX2=OFF' - build: 'avx512' defines: '-DLLAMA_AVX512=ON' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v4 with: submodules: true - uses: actions/setup-go@v4 with: go-version: '>=1.21.0' - name: Dependencies run: | sudo apt-get update sudo apt-get install build-essential ffmpeg - name: Cache grpc id: cache-grpc uses: actions/cache@v3 with: path: grpc key: ${{ runner.os }}-grpc - name: Build grpc if: steps.cache-grpc.outputs.cache-hit != 'true' run: | git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ cd grpc && mkdir -p cmake/build && cd cmake/build && cmake -DgRPC_INSTALL=ON \ -DgRPC_BUILD_TESTS=OFF \ ../.. && sudo make -j12 - name: Install gRPC run: | cd grpc && cd cmake/build && sudo make -j12 install - name: Build id: build env: CMAKE_ARGS: "${{ matrix.defines }}" BUILD_ID: "${{ matrix.build }}" run: | STATIC=true make dist - uses: actions/upload-artifact@v3 with: name: ${{ matrix.build }} path: release/ - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: | release/* build-macOS: strategy: matrix: include: - build: 'avx2' defines: '' - build: 'avx' defines: '-DLLAMA_AVX2=OFF' - build: 'avx512' defines: '-DLLAMA_AVX512=ON' runs-on: macOS-latest steps: - name: Clone uses: actions/checkout@v4 with: submodules: true - uses: actions/setup-go@v4 with: go-version: '>=1.21.0' - name: Dependencies run: | brew install protobuf grpc - name: Build id: build env: CMAKE_ARGS: "${{ matrix.defines }}" BUILD_ID: "${{ matrix.build }}" run: | export C_INCLUDE_PATH=/usr/local/include export CPLUS_INCLUDE_PATH=/usr/local/include make dist - uses: actions/upload-artifact@v3 with: name: ${{ matrix.build }} path: release/ - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: | release/*