| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- 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
|