Skip to content

add windows build

add windows build #72

Workflow file for this run

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