Skip to content

Test-CI

Test-CI #38

Workflow file for this run

name: Test-CI
on:
workflow_dispatch:
inputs:
create_release:
description: 'Create new release'
required: true
type: boolean
jobs:
#build linux lib
build-linux-lib:
runs-on: ubuntu-latest
steps:
- name: Dependencies
id: depends
run: |
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libopenblas-dev
sudo apt-get install libopenblas64-dev
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
/bin/bash build.sh linux
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: linux-libllama
path: llama-java-core/llama.cpp/build/llamajava/libllamajava.so
#build macos lib
build-macos-lib:
runs-on: macos-latest
steps:
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
/bin/bash build.sh macos
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: macos-libllama
path: llama-java-core/llama.cpp/build/llamajava/libllamajava.dylib
- name: Upload metal lib
uses: actions/upload-artifact@v4
with:
name: macos-metallib
path: llama-java-core/llama.cpp/default.metallib
#build windows lib
build-windows-lib:
runs-on: windows-latest
env:
OPENBLAS_VERSION: 0.3.23
BUILD_ARGS: '-DLLAMA_NATIVE=OFF -DLLAMA_CUBLAS=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
steps:
- name: Download OpenBLAS
id: get_openblas
run: |
curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
mkdir $env:RUNNER_TEMP/openblas
tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
$vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
$msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
$lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
& $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
- name: Checkout project
id: checkout_project
uses: actions/checkout@v4
- name: Build lib
id: build_lib
run: |
cd llama-java-core
git.exe clone https://github.com/ggerganov/llama.cpp.git
if (!(Test-Path -Path "llama.cpp")) {
echo "Git clone llama.cpp failed."
exit 1
}
Copy-Item -Path llamajava/* -Destination llama.cpp/llamajava -Force
Copy-Item -Path llamajava/win/* -Destination llama.cpp/llamajava -Force
cd llama.cpp
$TAG_ID=(git.exe rev-list --tags --max-count=1)
$LATEST_TAG=(git.exe describe --tags $TAG_ID)
echo "=> Llama.cpp latest tag: $LATEST_TAG"
git.exe checkout $LATEST_TAG
Add-Content CMakeLists.txt "add_subdirectory(llamajava)"
echo "=> Checkout llama.cpp $LATEST_TAG finished."
mkdir build
cd build
cmake.exe .. ${env:BUILD_ARGS}
cmake.exe --build . --config Release
- name: Upload lib
uses: actions/upload-artifact@v4
with:
name: windows-libllama
path: llama-java-core/llama.cpp/build/bin/Release/llamajava.dll