add windows build #72
This file contains 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 | |
on: | |
workflow_dispatch: # allows manual triggering | |
inputs: | |
create_release: | |
description: 'Create new release' | |
required: true | |
type: boolean | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [opened, synchronize, reopened] | |
jobs: | |
build-release-ubuntu-2004: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
include: | |
- build: 'openblas' | |
defines: '-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS' | |
- build: 'cublas' | |
defines: '-DLLAMA_CUBLAS=ON' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v1 | |
- name: Common dependencies | |
id: depends | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y build-essential libpython3-dev | |
python3 -m pip install cmake | |
python3 -m pip install torch --index-url https://download.pytorch.org/whl/cpu | |
python3 -m pip install transformers==4.33.3 tiktoken pygls pyinstaller | |
- name: OpenBLAS dependencies | |
id: depends_openblas | |
if: ${{ matrix.build == 'openblas' }} | |
run: | | |
sudo apt-get install -y libopenblas-dev | |
- uses: Jimver/[email protected] | |
id: cuda-toolkit | |
if: ${{ matrix.build == 'cublas' }} | |
with: | |
cuda: '11.8.0' | |
- name: Build backend server | |
id: cmake_build_backend_server | |
run: | | |
cmake -B build_backend_server -S . -DLLAMA_NATIVE=OFF ${{ matrix.defines }} | |
cmake --build build_backend_server --config Release | |
- name: Build lsp server | |
id: pyinstaller_build_lsp_server | |
run: | | |
pyinstaller flatline_lsp.py \ | |
--copy-metadata tqdm \ | |
--copy-metadata regex \ | |
--copy-metadata requests \ | |
--copy-metadata packaging \ | |
--copy-metadata filelock \ | |
--copy-metadata numpy \ | |
--copy-metadata tokenizers \ | |
--copy-metadata huggingface-hub \ | |
--copy-metadata safetensors \ | |
--copy-metadata pyyaml \ | |
--copy-metadata torch \ | |
--hidden-import=tiktoken_ext.openai_public \ | |
--hidden-import=tiktoken_ext \ | |
; | |
- name: Make package | |
id: make_package | |
run: | | |
mkdir -p ./dist/flatline_lsp/_internal/flatline/model_data | |
mkdir -p ./dist/flatline_lsp/_internal/flatline/backend_server | |
mv build_backend_server/bin/flatline-server ./dist/flatline_lsp/_internal/flatline/backend_server/flatline-server | |
mkdir -p ./dist/flatline_lsp/license | |
find build_backend_server/bin -name \*.LICENSE.txt | xargs -I{} cp {} ./dist/flatline_lsp/license/ | |
cd dist | |
zip -ry flatline_lsp_ubuntu2004_${{ matrix.build }}.zip flatline_lsp | |
- name: Upload package | |
id: upload_package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: flatline_lsp_ubuntu2004_${{ matrix.build }}.zip | |
path: dist/flatline_lsp_ubuntu2004_${{ matrix.build }}.zip | |
build-release-windows-latest: | |
runs-on: windows-latest | |
env: | |
OPENBLAS_VERSION: 0.3.23 | |
strategy: | |
matrix: | |
include: | |
- build: 'openblas' | |
defines: '-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v1 | |
- name: Common dependencies | |
id: depends | |
run: | | |
python3 -m pip install cmake | |
python3 -m pip install torch --index-url https://download.pytorch.org/whl/cpu | |
python3 -m pip install transformers==4.33.3 tiktoken pygls pyinstaller | |
- name: Download OpenBLAS | |
id: get_openblas | |
if: ${{ matrix.build == '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: Build backend server | |
id: cmake_build_backend_server | |
run: | | |
cmake -B build_backend_server -S . -DLLAMA_NATIVE=OFF ${{ matrix.defines }} | |
cmake --build build_backend_server --config Release | |
- name: Add libopenblas.dll | |
id: add_libopenblas_dll | |
if: ${{ matrix.build == 'openblas' }} | |
run: | | |
cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build_backend_server/bin/Release/openblas.dll | |
cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build_backend_server/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt | |
- name: Build lsp server | |
id: pyinstaller_build_lsp_server | |
shell: bash | |
run: | | |
pyinstaller flatline_lsp.py \ | |
--copy-metadata tqdm \ | |
--copy-metadata regex \ | |
--copy-metadata requests \ | |
--copy-metadata packaging \ | |
--copy-metadata filelock \ | |
--copy-metadata numpy \ | |
--copy-metadata tokenizers \ | |
--copy-metadata huggingface-hub \ | |
--copy-metadata safetensors \ | |
--copy-metadata pyyaml \ | |
--copy-metadata torch \ | |
--hidden-import=tiktoken_ext.openai_public \ | |
--hidden-import=tiktoken_ext \ | |
; | |
- name: Make package | |
id: make_package | |
shell: bash | |
run: | | |
mkdir -p ./dist/flatline_lsp/_internal/flatline/model_data | |
mkdir -p ./dist/flatline_lsp/_internal/flatline/backend_server | |
find build_backend_server | |
mv build_backend_server/bin/flatline-server.exe ./dist/flatline_lsp/_internal/flatline/backend_server/flatline-server.exe | |
mkdir -p ./dist/flatline_lsp/license | |
find build_backend_server/bin -name \*.LICENSE.txt | xargs -I{} cp {} ./dist/flatline_lsp/license/ | |
cd dist | |
7z a flatline_lsp_windows_${{ matrix.build }}.zip flatline_lsp | |
- name: Upload package | |
id: upload_package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: flatline_lsp_windows_${{ matrix.build }}.zip | |
path: dist/flatline_lsp_windows_${{ matrix.build }}.zip | |
create-release: | |
runs-on: ubuntu-latest | |
needs: [build-release-ubuntu-2004] | |
steps: | |
- name: Get Commit ID | |
id: get_commit_id | |
run: | | |
COMMIT_ID=$(echo ${{ github.sha }} | head -c 7) | |
echo "::set-output name=commit_id::${COMMIT_ID}" | |
- name: Download all artifact | |
id: download-all-artifact | |
uses: actions/download-artifact@v3 | |
- name: Create release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v0.0.0_${{ steps.get_commit_id.outputs.commit_id }} | |
release_name: Release v0.0.0_${{ steps.get_commit_id.outputs.commit_id }} | |
body: | | |
Release test | |
draft: false | |
prerelease: true | |
- name: Upload release ubuntu2004 openblas asset | |
id: upload_release_ubuntu2004_openblas_asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: flatline_lsp_ubuntu2004_openblas.zip/flatline_lsp_ubuntu2004_openblas.zip | |
asset_name: flatline_lsp_ubuntu2004_openblas.zip | |
asset_content_type: application/zip | |
- name: Upload release ubuntu2004 cublas asset | |
id: upload_release_ubuntu2004_cublas_asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: flatline_lsp_ubuntu2004_cublas.zip/flatline_lsp_ubuntu2004_cublas.zip | |
asset_name: flatline_lsp_ubuntu2004_cublas.zip | |
asset_content_type: application/zip | |
- name: Upload release windows openblas asset | |
id: upload_release_windows_openblas_asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: flatline_lsp_windows_openblas.zip/flatline_lsp_windows_openblas.zip | |
asset_name: flatline_lsp_windows_openblas.zip | |
asset_content_type: application/zip | |
test-on-ubuntu-2004: | |
runs-on: ubuntu-20.04 | |
needs: [create-release] | |
strategy: | |
matrix: | |
include: | |
- build: 'openblas' | |
- build: 'cublas' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v1 | |
- name: Get Commit ID | |
id: get_commit_id | |
run: | | |
COMMIT_ID=$(echo ${{ github.sha }} | head -c 7) | |
echo "::set-output name=commit_id::${COMMIT_ID}" | |
- name: Common dependencies | |
id: depends | |
run: | | |
sudo apt-get update | |
- name: OpenBLAS dependencies | |
id: depends_openblas | |
if: ${{ matrix.build == 'openblas' }} | |
run: | | |
sudo apt-get install -y libopenblas0 | |
- uses: Jimver/[email protected] | |
id: cuda-toolkit | |
if: ${{ matrix.build == 'cublas' }} | |
with: | |
cuda: '11.8.0' | |
- name: Unit test | |
id: unit_test | |
run: | | |
python3 -m pip install torch --index-url https://download.pytorch.org/whl/cpu | |
python3 -m pip install transformers==4.33.3 tiktoken pygls pyinstaller | |
pip install pytest | |
python3 -m pytest tests | |
- name: Install and test | |
id: install_and_test | |
run: | | |
curl -L https://raw.githubusercontent.com/okdshin/flatline_lsp/main/install.sh | bash -s -- -b ${{ matrix.build }} -r v0.0.0_${{ steps.get_commit_id.outputs.commit_id }} | |
$HOME/.flatline_lsp/_internal/flatline/backend_server/flatline-server --help | |
$HOME/.flatline_lsp/flatline_lsp --help | |
test-on-ubuntu-2204: | |
runs-on: ubuntu-22.04 | |
needs: [create-release] | |
strategy: | |
matrix: | |
include: | |
- build: 'openblas' | |
- build: 'cublas' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v1 | |
- name: Get Commit ID | |
id: get_commit_id | |
run: | | |
COMMIT_ID=$(echo ${{ github.sha }} | head -c 7) | |
echo "::set-output name=commit_id::${COMMIT_ID}" | |
- name: Common dependencies | |
id: depends | |
run: | | |
sudo apt-get update | |
- name: OpenBLAS dependencies | |
id: depends_openblas | |
if: ${{ matrix.build == 'openblas' }} | |
run: | | |
sudo apt-get install -y libopenblas0 | |
- uses: Jimver/[email protected] | |
id: cuda-toolkit | |
if: ${{ matrix.build == 'cublas' }} | |
with: | |
cuda: '11.8.0' | |
- name: Unit test | |
id: unit_test | |
run: | | |
python3 -m pip install torch --index-url https://download.pytorch.org/whl/cpu | |
python3 -m pip install transformers==4.33.3 tiktoken pygls pyinstaller | |
pip install pytest | |
python3 -m pytest tests | |
- name: Install and test | |
id: install_and_test | |
run: | | |
curl -L https://raw.githubusercontent.com/okdshin/flatline_lsp/main/install.sh | bash -s -- -b ${{ matrix.build }} -r v0.0.0_${{ steps.get_commit_id.outputs.commit_id }} | |
$HOME/.flatline_lsp/_internal/flatline/backend_server/flatline-server --help | |
$HOME/.flatline_lsp/flatline_lsp --help |