fix: do not pass by environ to ffmpeg #12652
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Release | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- 'v*' | |
pull_request: | |
env: | |
GRPC_VERSION: v1.65.0 | |
permissions: | |
contents: write | |
concurrency: | |
group: ci-releases-${{ github.head_ref || github.ref }}-${{ github.repository }} | |
cancel-in-progress: true | |
jobs: | |
# TODO: temporary disable linux-arm64 build | |
# build-linux-arm: | |
# runs-on: ubuntu-24.04-arm | |
# steps: | |
# - name: Free Disk Space (Ubuntu) | |
# uses: jlumbroso/free-disk-space@main | |
# with: | |
# # this might remove tools that are actually needed, | |
# # if set to "true" but frees about 6 GB | |
# tool-cache: true | |
# # all of these default to true, but feel free to set to | |
# # "false" if necessary for your workflow | |
# android: true | |
# dotnet: true | |
# haskell: true | |
# large-packages: true | |
# docker-images: true | |
# swap-storage: true | |
# - name: Release space from worker | |
# run: | | |
# echo "Listing top largest packages" | |
# pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) | |
# head -n 30 <<< "${pkgs}" | |
# echo | |
# df -h | |
# echo | |
# sudo apt-get remove -y '^llvm-.*|^libllvm.*' || true | |
# sudo apt-get remove --auto-remove android-sdk-platform-tools snapd || true | |
# sudo apt-get purge --auto-remove android-sdk-platform-tools snapd || true | |
# sudo rm -rf /usr/local/lib/android | |
# sudo apt-get remove -y '^dotnet-.*|^aspnetcore-.*' || true | |
# sudo rm -rf /usr/share/dotnet | |
# sudo apt-get remove -y '^mono-.*' || true | |
# sudo apt-get remove -y '^ghc-.*' || true | |
# sudo apt-get remove -y '.*jdk.*|.*jre.*' || true | |
# sudo apt-get remove -y 'php.*' || true | |
# sudo apt-get remove -y hhvm powershell firefox monodoc-manual msbuild || true | |
# sudo apt-get remove -y '^google-.*' || true | |
# sudo apt-get remove -y azure-cli || true | |
# sudo apt-get remove -y '^mongo.*-.*|^postgresql-.*|^mysql-.*|^mssql-.*' || true | |
# sudo apt-get remove -y '^gfortran-.*' || true | |
# sudo apt-get remove -y microsoft-edge-stable || true | |
# sudo apt-get remove -y firefox || true | |
# sudo apt-get remove -y powershell || true | |
# sudo apt-get remove -y r-base-core || true | |
# sudo apt-get autoremove -y | |
# sudo apt-get clean | |
# echo | |
# echo "Listing top largest packages" | |
# pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) | |
# head -n 30 <<< "${pkgs}" | |
# echo | |
# sudo rm -rfv build || true | |
# sudo rm -rf /usr/share/dotnet || true | |
# sudo rm -rf /opt/ghc || true | |
# sudo rm -rf "/usr/local/share/boost" || true | |
# sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true | |
# df -h | |
# - name: Force Install GIT latest | |
# run: | | |
# sudo apt-get update \ | |
# && sudo apt-get install -y software-properties-common \ | |
# && sudo apt-get update \ | |
# && sudo add-apt-repository -y ppa:git-core/ppa \ | |
# && sudo apt-get update \ | |
# && sudo apt-get install -y git | |
# - name: Clone | |
# uses: actions/checkout@v4 | |
# with: | |
# submodules: true | |
# - uses: actions/setup-go@v5 | |
# with: | |
# go-version: '1.21.x' | |
# cache: false | |
# - name: Dependencies | |
# run: | | |
# sudo apt-get update | |
# sudo apt-get install -y wget curl build-essential ffmpeg protobuf-compiler ccache upx-ucl gawk cmake libgmock-dev | |
# make install-go-tools | |
# - name: Install CUDA Dependencies | |
# run: | | |
# curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/arm64/cuda-keyring_1.1-1_all.deb | |
# sudo dpkg -i cuda-keyring_1.1-1_all.deb | |
# sudo apt-get update | |
# sudo apt-get install -y cuda-nvcc-${CUDA_VERSION} libcublas-dev-${CUDA_VERSION} | |
# env: | |
# CUDA_VERSION: 12-5 | |
# - name: Cache grpc | |
# id: cache-grpc | |
# uses: actions/cache@v4 | |
# with: | |
# path: grpc | |
# key: ${{ runner.os }}-grpc-arm64-${{ env.GRPC_VERSION }} | |
# - name: Build grpc | |
# if: steps.cache-grpc.outputs.cache-hit != 'true' | |
# run: | | |
# git clone --recurse-submodules -b ${{ env.GRPC_VERSION }} --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ | |
# cd grpc && sed -i "216i\ TESTONLY" "third_party/abseil-cpp/absl/container/CMakeLists.txt" && mkdir -p cmake/build && \ | |
# cd cmake/build && cmake -DgRPC_INSTALL=ON \ | |
# -DgRPC_BUILD_TESTS=OFF \ | |
# ../.. && sudo make --jobs 5 --output-sync=target | |
# - name: Install gRPC | |
# run: | | |
# cd grpc && cd cmake/build && sudo make --jobs 5 --output-sync=target install | |
# # BACKEND_LIBS needed for gpu-workload: /opt/intel/oneapi/*/lib/libiomp5.so /opt/intel/oneapi/*/lib/libmkl_core.so /opt/intel/oneapi/*/lib/libmkl_core.so.2 /opt/intel/oneapi/*/lib/libmkl_intel_ilp64.so /opt/intel/oneapi/*/lib/libmkl_intel_ilp64.so.2 /opt/intel/oneapi/*/lib/libmkl_sycl_blas.so /opt/intel/oneapi/*/lib/libmkl_sycl_blas.so.4 /opt/intel/oneapi/*/lib/libmkl_tbb_thread.so /opt/intel/oneapi/*/lib/libmkl_tbb_thread.so.2 /opt/intel/oneapi/*/lib/libsycl.so /opt/intel/oneapi/*/lib/libsycl.so.7 /opt/intel/oneapi/*/lib/libsycl.so.7.1.0 /opt/rocm-*/lib/libamdhip64.so /opt/rocm-*/lib/libamdhip64.so.5 /opt/rocm-*/lib/libamdhip64.so.6 /opt/rocm-*/lib/libamdhip64.so.6.1.60100 /opt/rocm-*/lib/libhipblas.so /opt/rocm-*/lib/libhipblas.so.2 /opt/rocm-*/lib/libhipblas.so.2.1.60100 /opt/rocm-*/lib/librocblas.so /opt/rocm-*/lib/librocblas.so.4 /opt/rocm-*/lib/librocblas.so.4.1.60100 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0 /usr/lib/x86_64-linux-gnu/libm.so.6 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 /usr/lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/librt.so.1 /usr/local/cuda-*/targets/x86_64-linux/lib/libcublas.so /usr/local/cuda-*/targets/x86_64-linux/lib/libcublasLt.so /usr/local/cuda-*/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda-*/targets/x86_64-linux/lib/stubs/libcuda.so | |
# - name: Build | |
# id: build | |
# run: | | |
# go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@1958fcbe2ca8bd93af633f11e97d44e567e945af | |
# go install google.golang.org/protobuf/cmd/[email protected] | |
# export PATH=$PATH:$GOPATH/bin | |
# export PATH=/usr/local/cuda/bin:$PATH | |
# sudo cp /lib64/ld-linux-aarch64.so.1 ld.so | |
# BACKEND_LIBS="./ld.so ./sources/go-piper/piper/build/fi/lib/libfmt.a ./sources/go-piper/piper-phonemize/pi/lib/libonnxruntime.so.1.14.1 ./sources/go-piper/piper-phonemize/pi/src/libespeak-ng/libespeak-ng.so /usr/lib/aarch64-linux-gnu/libdl.so.2 /usr/lib/aarch64-linux-gnu/librt.so.1 /usr/lib/aarch64-linux-gnu/libpthread.so.0 ./sources/go-piper/piper-phonemize/pi/lib/libpiper_phonemize.so.1 ./sources/go-piper/piper/build/si/lib/libspdlog.a ./sources/go-piper/espeak/ei/lib/libucd.so" \ | |
# make -j4 dist | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: LocalAI-linux-arm64 | |
# path: release/ | |
# - name: Release | |
# uses: softprops/action-gh-release@v2 | |
# if: startsWith(github.ref, 'refs/tags/') | |
# with: | |
# files: | | |
# release/* | |
# - name: Setup tmate session if tests fail | |
# if: ${{ failure() }} | |
# uses: mxschmitt/[email protected] | |
# with: | |
# detached: true | |
# connect-timeout-seconds: 180 | |
# limit-access-to-actor: true | |
build-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@main | |
with: | |
# this might remove tools that are actually needed, | |
# if set to "true" but frees about 6 GB | |
tool-cache: true | |
# all of these default to true, but feel free to set to | |
# "false" if necessary for your workflow | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: true | |
docker-images: true | |
swap-storage: true | |
- name: Release space from worker | |
run: | | |
echo "Listing top largest packages" | |
pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) | |
head -n 30 <<< "${pkgs}" | |
echo | |
df -h | |
echo | |
sudo apt-get remove -y '^llvm-.*|^libllvm.*' || true | |
sudo apt-get remove --auto-remove android-sdk-platform-tools snapd || true | |
sudo apt-get purge --auto-remove android-sdk-platform-tools snapd || true | |
sudo rm -rf /usr/local/lib/android | |
sudo apt-get remove -y '^dotnet-.*|^aspnetcore-.*' || true | |
sudo rm -rf /usr/share/dotnet | |
sudo apt-get remove -y '^mono-.*' || true | |
sudo apt-get remove -y '^ghc-.*' || true | |
sudo apt-get remove -y '.*jdk.*|.*jre.*' || true | |
sudo apt-get remove -y 'php.*' || true | |
sudo apt-get remove -y hhvm powershell firefox monodoc-manual msbuild || true | |
sudo apt-get remove -y '^google-.*' || true | |
sudo apt-get remove -y azure-cli || true | |
sudo apt-get remove -y '^mongo.*-.*|^postgresql-.*|^mysql-.*|^mssql-.*' || true | |
sudo apt-get remove -y '^gfortran-.*' || true | |
sudo apt-get remove -y microsoft-edge-stable || true | |
sudo apt-get remove -y firefox || true | |
sudo apt-get remove -y powershell || true | |
sudo apt-get remove -y r-base-core || true | |
sudo apt-get autoremove -y | |
sudo apt-get clean | |
echo | |
echo "Listing top largest packages" | |
pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) | |
head -n 30 <<< "${pkgs}" | |
echo | |
sudo rm -rfv build || true | |
sudo rm -rf /usr/share/dotnet || true | |
sudo rm -rf /opt/ghc || true | |
sudo rm -rf "/usr/local/share/boost" || true | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true | |
df -h | |
- name: Force Install GIT latest | |
run: | | |
sudo apt-get update \ | |
&& sudo apt-get install -y software-properties-common \ | |
&& sudo apt-get update \ | |
&& sudo add-apt-repository -y ppa:git-core/ppa \ | |
&& sudo apt-get update \ | |
&& sudo apt-get install -y git | |
- name: Clone | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache: false | |
- name: Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y wget curl build-essential ffmpeg protobuf-compiler ccache upx-ucl gawk cmake libgmock-dev | |
make install-go-tools | |
- name: Intel Dependencies | |
run: | | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt update | |
sudo apt install -y intel-basekit | |
- name: Install CUDA Dependencies | |
run: | | |
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb | |
sudo dpkg -i cuda-keyring_1.1-1_all.deb | |
sudo apt-get update | |
sudo apt-get install -y cuda-nvcc-${CUDA_VERSION} libcublas-dev-${CUDA_VERSION} | |
env: | |
CUDA_VERSION: 12-5 | |
- name: "Install Hipblas" | |
env: | |
ROCM_VERSION: "6.1" | |
AMDGPU_VERSION: "6.1" | |
run: | | |
set -ex | |
sudo apt-get update | |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl libnuma-dev gnupg | |
sudo apt update | |
wget https://repo.radeon.com/amdgpu-install/6.4.1/ubuntu/noble/amdgpu-install_6.4.60401-1_all.deb | |
sudo apt install ./amdgpu-install_6.4.60401-1_all.deb | |
sudo apt update | |
sudo amdgpu-install --usecase=rocm | |
sudo apt-get clean | |
sudo rm -rf /var/lib/apt/lists/* | |
sudo ldconfig | |
- name: Cache grpc | |
id: cache-grpc | |
uses: actions/cache@v4 | |
with: | |
path: grpc | |
key: ${{ runner.os }}-grpc-${{ env.GRPC_VERSION }} | |
- name: Build grpc | |
if: steps.cache-grpc.outputs.cache-hit != 'true' | |
run: | | |
git clone --recurse-submodules -b ${{ env.GRPC_VERSION }} --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ | |
cd grpc && sed -i "216i\ TESTONLY" "third_party/abseil-cpp/absl/container/CMakeLists.txt" && mkdir -p cmake/build && \ | |
cd cmake/build && cmake -DgRPC_INSTALL=ON \ | |
-DgRPC_BUILD_TESTS=OFF \ | |
../.. && sudo make --jobs 5 --output-sync=target | |
- name: Install gRPC | |
run: | | |
cd grpc && cd cmake/build && sudo make --jobs 5 --output-sync=target install | |
# BACKEND_LIBS needed for gpu-workload: /opt/intel/oneapi/*/lib/libiomp5.so /opt/intel/oneapi/*/lib/libmkl_core.so /opt/intel/oneapi/*/lib/libmkl_core.so.2 /opt/intel/oneapi/*/lib/libmkl_intel_ilp64.so /opt/intel/oneapi/*/lib/libmkl_intel_ilp64.so.2 /opt/intel/oneapi/*/lib/libmkl_sycl_blas.so /opt/intel/oneapi/*/lib/libmkl_sycl_blas.so.4 /opt/intel/oneapi/*/lib/libmkl_tbb_thread.so /opt/intel/oneapi/*/lib/libmkl_tbb_thread.so.2 /opt/intel/oneapi/*/lib/libsycl.so /opt/intel/oneapi/*/lib/libsycl.so.7 /opt/intel/oneapi/*/lib/libsycl.so.7.1.0 /opt/rocm-*/lib/libamdhip64.so /opt/rocm-*/lib/libamdhip64.so.5 /opt/rocm-*/lib/libamdhip64.so.6 /opt/rocm-*/lib/libamdhip64.so.6.1.60100 /opt/rocm-*/lib/libhipblas.so /opt/rocm-*/lib/libhipblas.so.2 /opt/rocm-*/lib/libhipblas.so.2.1.60100 /opt/rocm-*/lib/librocblas.so /opt/rocm-*/lib/librocblas.so.4 /opt/rocm-*/lib/librocblas.so.4.1.60100 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0 /usr/lib/x86_64-linux-gnu/libm.so.6 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 /usr/lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/librt.so.1 /usr/local/cuda-*/targets/x86_64-linux/lib/libcublas.so /usr/local/cuda-*/targets/x86_64-linux/lib/libcublasLt.so /usr/local/cuda-*/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda-*/targets/x86_64-linux/lib/stubs/libcuda.so | |
- name: Build | |
id: build | |
run: | | |
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@1958fcbe2ca8bd93af633f11e97d44e567e945af | |
go install google.golang.org/protobuf/cmd/[email protected] | |
export PATH=$PATH:$GOPATH/bin | |
export PATH=/usr/local/cuda/bin:$PATH | |
export PATH=/opt/rocm/bin:$PATH | |
source /opt/intel/oneapi/setvars.sh | |
sudo cp /lib64/ld-linux-x86-64.so.2 ld.so | |
make -j4 dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: LocalAI-linux | |
path: release/ | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
release/* | |
- name: Setup tmate session if tests fail | |
if: ${{ failure() }} | |
uses: mxschmitt/[email protected] | |
with: | |
detached: true | |
connect-timeout-seconds: 180 | |
limit-access-to-actor: true | |
build-macOS-x86_64: | |
runs-on: macos-13 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache: false | |
- name: Dependencies | |
run: | | |
brew install protobuf grpc | |
make install-go-tools | |
- name: Build | |
id: build | |
run: | | |
export C_INCLUDE_PATH=/usr/local/include | |
export CPLUS_INCLUDE_PATH=/usr/local/include | |
export PATH=$PATH:$GOPATH/bin | |
export SKIP_GRPC_BACKEND=backend-assets/grpc/whisper | |
make dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: LocalAI-MacOS-x86_64 | |
path: release/ | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
release/* | |
- name: Setup tmate session if tests fail | |
if: ${{ failure() }} | |
uses: mxschmitt/[email protected] | |
with: | |
detached: true | |
connect-timeout-seconds: 180 | |
limit-access-to-actor: true | |
build-macOS-arm64: | |
runs-on: macos-14 | |
steps: | |
- name: Clone | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
cache: false | |
- name: Dependencies | |
run: | | |
brew install protobuf grpc libomp llvm | |
make install-go-tools | |
- name: Build | |
id: build | |
run: | | |
export C_INCLUDE_PATH=/usr/local/include | |
export CPLUS_INCLUDE_PATH=/usr/local/include | |
export PATH=$PATH:$GOPATH/bin | |
export CC=/opt/homebrew/opt/llvm/bin/clang | |
make dist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: LocalAI-MacOS-arm64 | |
path: release/ | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
release/* | |
- name: Setup tmate session if tests fail | |
if: ${{ failure() }} | |
uses: mxschmitt/[email protected] | |
with: | |
detached: true | |
connect-timeout-seconds: 180 | |
limit-access-to-actor: true |