chore: add CI templates #16
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: CI Quality Gate | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| workflow_call: | |
| secrets: | |
| MINIO_BUCKET_NAME: | |
| required: false | |
| MINIO_REGION: | |
| required: false | |
| MINIO_ENDPOINT: | |
| required: false | |
| MINIO_ACCESS_KEY_ID: | |
| required: false | |
| MINIO_SECRET_ACCESS_KEY: | |
| required: false | |
| env: | |
| LLM_MODEL_URL: https://delta.jan.ai/tinyllama-1.1b-chat-v0.3.Q2_K.gguf | |
| EMBEDDING_MODEL_URL: https://catalog.jan.ai/dist/models/embeds/nomic-embed-text-v1.5.f16.gguf | |
| VULKAN_VERSION: 1.3.261.1 | |
| jobs: | |
| build-and-test: | |
| runs-on: ${{ matrix.runs-on }} | |
| if: ${{ ! startsWith(github.head_ref, 'update-submodule') }} | |
| timeout-minutes: 90 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: "linux" | |
| name: "arm64" | |
| runs-on: "ubuntu-2004-arm64" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx2-x64" | |
| runs-on: "ubuntu-20-04" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "noavx-x64" | |
| runs-on: "ubuntu-20-04" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx-x64" | |
| runs-on: "ubuntu-20-04" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx512-x64" | |
| runs-on: "ubuntu-20-04" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "vulkan-x64" | |
| runs-on: "ubuntu-22-04" | |
| cmake-flags: "-DGGML_VULKAN=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: true | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "noavx-x64-cuda-11-7" | |
| runs-on: "ubuntu-20-04-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx2-x64-cuda-11-7" | |
| runs-on: "ubuntu-20-04-cuda-11-7" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx-x64-cuda-11-7" | |
| runs-on: "ubuntu-20-04-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx512-x64-cuda-11-7" | |
| runs-on: "ubuntu-20-04-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "noavx-cuda-cu12.0-x64" | |
| runs-on: "ubuntu-20-04-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx2-cuda-cu12.0-x64" | |
| runs-on: "ubuntu-20-04-cuda-12-0" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx-cuda-cu12.0-x64" | |
| runs-on: "ubuntu-20-04-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "linux" | |
| name: "avx512-cuda-cu12.0-x64" | |
| runs-on: "ubuntu-20-04-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: "/home/runner/.ccache" | |
| - os: "macos" | |
| name: "x64" | |
| runs-on: "macos-selfhosted-12" | |
| cmake-flags: "-DGGML_METAL=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "macos" | |
| name: "arm64" | |
| runs-on: "macos-selfhosted-12-arm64" | |
| cmake-flags: "-DGGML_METAL_EMBED_LIBRARY=ON -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx2-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "noavx-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx-x64" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx512-x64" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "vulkan-x64" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_VULKAN=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
| run-e2e: false | |
| vulkan: true | |
| ccache: false | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "noavx-cuda-cu12.0-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx2-cuda-cu12.0-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx-cuda-cu12.0-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx512-cuda-cu12.0-x64" | |
| runs-on: "windows-cuda-12-0" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "noavx-x64-cuda-11-7" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx2-x64-cuda-11-7" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx-x64-cuda-11-7" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| - os: "win" | |
| name: "avx512-x64-cuda-11-7" | |
| runs-on: "windows-cuda-11-7" | |
| cmake-flags: "-DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
| run-e2e: false | |
| vulkan: false | |
| ccache: true | |
| ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| submodules: recursive | |
| # - name: Apply patch file | |
| # run: | | |
| # cd llama.cpp | |
| # git apply ../patches/0001-Add-API-query-buffer-size.patch | |
| - name: use python for linux | |
| continue-on-error: true | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.10" | |
| - name: Install tools on Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| choco install ccache awscli make ccache ninja -y | |
| - name: Install tools on Linux | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get install -y ninja-build | |
| python3 -m pip install awscli | |
| if [ "${{ matrix.os }}${{ matrix.name }}" == "linuxarm64" ]; then | |
| sudo apt-get install -y ccache | |
| exit 0 | |
| fi | |
| cd /tmp | |
| wget https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2-linux-x86_64.tar.xz | |
| tar -xvf ccache-4.10.2-linux-x86_64.tar.xz | |
| sudo cp ccache-4.10.2-linux-x86_64/ccache /usr/bin/ccache | |
| ccache -V | |
| rm -rf /tmp/ccache-4.10.2-linux-x86_64.tar.xz /tmp/ccache-4.10.2-linux-x86_64 | |
| - name: Download ccache from s3 | |
| if: runner.os == 'Windows' | |
| continue-on-error: true | |
| run: | | |
| Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" | |
| refreshenv | |
| aws s3 sync s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} ${{ matrix.ccache-dir }} --endpoint ${{ secrets.MINIO_ENDPOINT }} --cli-read-timeout 0 | |
| env: | |
| AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
| AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
| AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
| - name: Download ccache from s3 | |
| if: runner.os == 'Linux' | |
| continue-on-error: true | |
| run: | | |
| aws s3 sync s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} ${{ matrix.ccache-dir }} --endpoint ${{ secrets.MINIO_ENDPOINT }} --cli-read-timeout 0 | |
| env: | |
| AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
| AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
| AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
| - name: Install coreutils macos | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install coreutils | |
| - name: Prepare Vulkan SDK Linux | |
| if: ${{ matrix.vulkan && (matrix.os == 'linux') }} | |
| run: | | |
| wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - | |
| sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list | |
| sudo apt-get update -y | |
| sudo apt-get install -y build-essential vulkan-sdk | |
| - name: Prepare Vulkan SDK Windows | |
| if: ${{ matrix.vulkan && (matrix.os == 'windows') }} | |
| continue-on-error: true | |
| run: | | |
| if (Test-Path C:/VulkanSDK/${env:VULKAN_VERSION}/) { Remove-Item -Path C:/VulkanSDK/${env:VULKAN_VERSION}/ -Force -Recurse } | |
| curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe" | |
| & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install | |
| Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" | |
| Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" | |
| - name: Add msbuild to PATH | |
| if: runner.os == 'Windows' | |
| uses: ilammy/[email protected] | |
| - name: Build | |
| id: build-and-test | |
| run: | | |
| make build-lib CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" | |
| - name: Pre Package | |
| run: | | |
| make pre-package | |
| - uses: 1arp/[email protected] | |
| with: | |
| path: "llama-cpp" | |
| isAbsolutePath: false | |
| file: "version.txt" | |
| content: | | |
| name: ${{ matrix.os }}-${{ matrix.name }} | |
| version: ${{github.event.pull_request.head.sha}} | |
| - name: Package | |
| run: | | |
| make package | |
| # - name: Run e2e testing | |
| # if: ${{ matrix.run-e2e }} | |
| # run: | | |
| # make run-e2e-test LLM_MODEL_URL=${{ env.LLM_MODEL_URL }} EMBEDDING_MODEL_URL=${{ env.EMBEDDING_MODEL_URL }} | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: llama-cpp-${{ matrix.os }}-${{ matrix.name }} | |
| path: ./llama-cpp | |
| - name: Calculate SHA512 Checksum (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| sha512sum ./llama-cpp.tar.gz | awk '{ print $1 }' > sha512.txt | |
| size=$(stat -f%z ./llama-cpp.tar.gz) # Sử dụng -f%z cho macOS | |
| echo "checksum=$(cat sha512.txt)" >> $GITHUB_ENV | |
| echo "size=$size" >> $GITHUB_ENV | |
| - name: Calculate SHA512 Checksum (Windows) | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: | | |
| CertUtil -hashfile ./llama-cpp.tar.gz SHA512 | Select-String -Pattern "^[0-9a-fA-F]+$" | Out-File sha512.txt | |
| $size = (Get-Item ./llama-cpp.tar.gz).length | |
| echo "checksum=$(Get-Content sha512.txt)" >> $env:GITHUB_ENV | |
| echo "size=$size" >> $env:GITHUB_ENV | |
| - name: Calculate SHA512 Checksum (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sha512sum ./llama-cpp.tar.gz | awk '{ print $1 }' > sha512.txt | |
| size=$(stat -c%s ./llama-cpp.tar.gz) | |
| echo "checksum=$(cat sha512.txt)" >> $GITHUB_ENV | |
| echo "size=$size" >> $GITHUB_ENV | |
| ## Write for matrix outputs workaround | |
| - uses: cloudposse/github-action-matrix-outputs-write@v1 | |
| id: out | |
| with: | |
| matrix-step-name: ${{ github.job }} | |
| matrix-key: ${{ matrix.os }}-${{ matrix.name }} | |
| outputs: |- | |
| sha512: ${{ env.checksum }} | |
| size: ${{ env.size }} | |
| - name: Upload ccache to s3 | |
| continue-on-error: true | |
| if: always() && runner.os == 'Windows' | |
| run: | | |
| Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" | |
| refreshenv | |
| aws s3 sync ${{ matrix.ccache-dir }} s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} --endpoint ${{ secrets.MINIO_ENDPOINT }} | |
| env: | |
| AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
| AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
| AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
| - name: Upload ccache to s3 | |
| continue-on-error: true | |
| if: always() && runner.os == 'Linux' | |
| run: | | |
| aws s3 sync ${{ matrix.ccache-dir }} s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} --endpoint ${{ secrets.MINIO_ENDPOINT }} | |
| env: | |
| AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
| AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
| AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
| ## Read matrix outputs | |
| read: | |
| runs-on: ubuntu-latest | |
| needs: [build-and-test] | |
| steps: | |
| - uses: cloudposse/github-action-matrix-outputs-read@v1 | |
| id: read | |
| with: | |
| matrix-step-name: build-and-test | |
| outputs: | |
| result: "${{ steps.read.outputs.result }}" | |
| create-checksum-file: | |
| runs-on: ubuntu-latest | |
| needs: [read] | |
| steps: | |
| - name: Create checksum.yml | |
| run: | | |
| version="${{github.event.pull_request.head.sha}}" | |
| outputs=${{ toJson(needs.read.outputs.result) }} | |
| echo $outputs | |
| echo "version: $version" > checksum.yml | |
| echo "files:" >> checksum.yml | |
| echo "$outputs" | jq -r --arg version "$version" ' | |
| .sha512 as $sha512 | | |
| .size as $size | | |
| (.sha512 | keys[]) as $key | | |
| "- url: llama-cpp-\($version)-\($key).tar.gz\n sha512: >-\n \($sha512[$key])\n size: \($size[$key])" | |
| ' >> checksum.yml | |
| cat checksum.yml |