mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 22:08:46 +01:00
e4412b45e3
* CI: Separate Build and Test steps (CMake) * CI: Make sure build passes before running tests (CMake) * CI: Standardise step id names
358 lines
9.0 KiB
YAML
358 lines
9.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
workflow_dispatch: # allows manual triggering
|
|
inputs:
|
|
create_release:
|
|
description: 'Create new release'
|
|
required: true
|
|
type: boolean
|
|
push:
|
|
paths: ['.github/workflows/**', 'CMakeLists.txt', 'Makefile', '**.h', '*.c', '**.cpp']
|
|
pull_request:
|
|
types: [opened, synchronize, edited, reopened, review_requested, ready_for_review]
|
|
paths: ['CMakeLists.txt', 'Makefile', '**.h', '*.c', '**.cpp']
|
|
|
|
env:
|
|
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
|
|
|
jobs:
|
|
ubuntu-latest-make:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Dependencies
|
|
id: depends
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install build-essential
|
|
|
|
- name: Build
|
|
id: make_build
|
|
run: |
|
|
make
|
|
|
|
ubuntu-latest-cmake:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Dependencies
|
|
id: depends
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install build-essential
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
cmake --build . --config Release
|
|
|
|
- name: Test
|
|
id: cmake_test
|
|
run: |
|
|
cd build
|
|
ctest --output-on-failure
|
|
|
|
macOS-latest-make:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Dependencies
|
|
id: depends
|
|
run: |
|
|
brew update
|
|
|
|
- name: Build
|
|
id: make_build
|
|
run: |
|
|
make
|
|
|
|
macOS-latest-cmake:
|
|
runs-on: macOS-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Dependencies
|
|
id: depends
|
|
run: |
|
|
brew update
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DLLAMA_AVX2=OFF ..
|
|
cmake --build . --config Release
|
|
|
|
- name: Test
|
|
id: cmake_test
|
|
run: |
|
|
cd build
|
|
ctest --output-on-failure
|
|
|
|
windows-latest-cmake:
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
cmake --build . --config Release
|
|
|
|
- name: Test
|
|
id: cmake_test
|
|
run: |
|
|
cd build
|
|
ctest -C Release --output-on-failure
|
|
|
|
- name: Get commit hash
|
|
id: commit
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
uses: pr-mpt/actions-commit-hash@v2
|
|
|
|
- name: Pack artifacts
|
|
id: pack_artifacts
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
run: |
|
|
7z a llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip .\build\bin\Release\*
|
|
|
|
- name: Create release
|
|
id: create_release
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
uses: zendesk/action-create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}
|
|
|
|
- name: Upload release
|
|
id: upload_release
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
asset_path: .\llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip
|
|
asset_name: llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip
|
|
asset_content_type: application/octet-stream
|
|
|
|
# ubuntu-latest-gcc:
|
|
# runs-on: ubuntu-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# build: [Debug, Release]
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Dependencies
|
|
# run: |
|
|
# sudo apt-get update
|
|
# sudo apt-get install build-essential
|
|
# sudo apt-get install cmake
|
|
#
|
|
# - name: Configure
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# make
|
|
#
|
|
# ubuntu-latest-clang:
|
|
# runs-on: ubuntu-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# build: [Debug, Release]
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Dependencies
|
|
# run: |
|
|
# sudo apt-get update
|
|
# sudo apt-get install build-essential
|
|
# sudo apt-get install cmake
|
|
#
|
|
# - name: Configure
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# make
|
|
#
|
|
# ubuntu-latest-gcc-sanitized:
|
|
# runs-on: ubuntu-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# sanitizer: [ADDRESS, THREAD, UNDEFINED]
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Dependencies
|
|
# run: |
|
|
# sudo apt-get update
|
|
# sudo apt-get install build-essential
|
|
# sudo apt-get install cmake
|
|
#
|
|
# - name: Configure
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=Debug -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# make
|
|
#
|
|
# windows:
|
|
# runs-on: windows-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# build: [Release]
|
|
# arch: [Win32, x64]
|
|
# include:
|
|
# - arch: Win32
|
|
# s2arc: x86
|
|
# - arch: x64
|
|
# s2arc: x64
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Add msbuild to PATH
|
|
# uses: microsoft/setup-msbuild@v1
|
|
#
|
|
# - name: Configure
|
|
# run: >
|
|
# cmake -S . -B ./build -A ${{ matrix.arch }}
|
|
# -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# cd ./build
|
|
# msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}
|
|
#
|
|
# - name: Upload binaries
|
|
# uses: actions/upload-artifact@v1
|
|
# with:
|
|
# name: llama-bin-${{ matrix.arch }}
|
|
# path: build/bin/${{ matrix.build }}
|
|
#
|
|
# windows-blas:
|
|
# runs-on: windows-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# build: [Release]
|
|
# arch: [Win32, x64]
|
|
# blas: [ON]
|
|
# include:
|
|
# - arch: Win32
|
|
# obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x86.zip
|
|
# s2arc: x86
|
|
# - arch: x64
|
|
# obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x64.zip
|
|
# s2arc: x64
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Add msbuild to PATH
|
|
# uses: microsoft/setup-msbuild@v1
|
|
#
|
|
# - name: Fetch OpenBLAS
|
|
# if: matrix.blas == 'ON'
|
|
# run: |
|
|
# C:/msys64/usr/bin/wget.exe -qO blas.zip ${{ matrix.obzip }}
|
|
# 7z x blas.zip -oblas -y
|
|
# copy blas/include/cblas.h .
|
|
# copy blas/include/openblas_config.h .
|
|
# echo "blasdir=$env:GITHUB_WORKSPACE/blas" >> $env:GITHUB_ENV
|
|
#
|
|
# - name: Configure
|
|
# run: >
|
|
# cmake -S . -B ./build -A ${{ matrix.arch }}
|
|
# -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
# -DLLAMA_SUPPORT_OPENBLAS=${{ matrix.blas }}
|
|
# -DCMAKE_LIBRARY_PATH="$env:blasdir/lib"
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# cd ./build
|
|
# msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}
|
|
#
|
|
# - name: Copy libopenblas.dll
|
|
# if: matrix.blas == 'ON'
|
|
# run: copy "$env:blasdir/bin/libopenblas.dll" build/bin/${{ matrix.build }}
|
|
#
|
|
# - name: Upload binaries
|
|
# if: matrix.blas == 'ON'
|
|
# uses: actions/upload-artifact@v1
|
|
# with:
|
|
# name: llama-blas-bin-${{ matrix.arch }}
|
|
# path: build/bin/${{ matrix.build }}
|
|
#
|
|
# emscripten:
|
|
# runs-on: ubuntu-latest
|
|
#
|
|
# strategy:
|
|
# matrix:
|
|
# build: [Release]
|
|
#
|
|
# steps:
|
|
# - name: Clone
|
|
# uses: actions/checkout@v1
|
|
#
|
|
# - name: Dependencies
|
|
# run: |
|
|
# wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz
|
|
# tar -xvf master.tar.gz
|
|
# emsdk-master/emsdk update
|
|
# emsdk-master/emsdk install latest
|
|
# emsdk-master/emsdk activate latest
|
|
#
|
|
# - name: Configure
|
|
# run: echo "tmp"
|
|
#
|
|
# - name: Build
|
|
# run: |
|
|
# pushd emsdk-master
|
|
# source ./emsdk_env.sh
|
|
# popd
|
|
# emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
# make
|