Upgrade llama.cpp from b9150 to b9151 #49
Workflow file for this run
This file contains hidden or 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: Publish | |
| on: | |
| push: | |
| branches: [ main ] | |
| tags: ['v*'] | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| release_to_maven_central: | |
| description: 'Release to Maven Central (true/false)' | |
| required: false | |
| default: 'false' | |
| enable_cuda_build: | |
| description: 'Compile CUDA artifacts (slow — nvcc install + build). Auto-enabled on tag pushes.' | |
| required: false | |
| default: 'false' | |
| env: | |
| MODEL_URL: "https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf" | |
| MODEL_NAME: "codellama-7b.Q2_K.gguf" | |
| RERANKING_MODEL_URL: "https://huggingface.co/gpustack/jina-reranker-v1-tiny-en-GGUF/resolve/main/jina-reranker-v1-tiny-en-Q4_0.gguf" | |
| RERANKING_MODEL_NAME: "jina-reranker-v1-tiny-en-Q4_0.gguf" | |
| DRAFT_MODEL_URL: "https://huggingface.co/QuantFactory/AMD-Llama-135m-code-GGUF/resolve/main/AMD-Llama-135m-code.Q2_K.gguf" | |
| DRAFT_MODEL_NAME: "AMD-Llama-135m-code.Q2_K.gguf" | |
| permissions: | |
| contents: read | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # Cross-compile jobs (Docker / dockcross) — produce release artifacts, no testing | |
| # --------------------------------------------------------------------------- | |
| crosscompile-linux-x86_64-cuda: | |
| name: Cross-Compile manylinux_2_28 x86_64 (CUDA) | |
| runs-on: ubuntu-latest | |
| outputs: | |
| built: ${{ steps.build.outputs.built }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== Host CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - name: Build libraries | |
| id: build | |
| shell: bash | |
| run: | | |
| if [[ "${{ startsWith(github.ref, 'refs/tags/v') }}" == "true" || "${{ github.event.inputs.enable_cuda_build }}" == "true" ]]; then | |
| .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" | |
| echo "built=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "CUDA compilation skipped — set enable_cuda_build=true or trigger a release event to build CUDA artifacts" | |
| echo "built=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Upload artifacts | |
| if: steps.build.outputs.built == 'true' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: linux-libraries-cuda | |
| path: ${{ github.workspace }}/src/main/resources_linux_cuda/net/ladenthin/llama/ | |
| crosscompile-linux-x86_64: | |
| name: Cross-Compile manylinux2014 x86_64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== Host CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| .github/dockcross/dockcross-manylinux2014-x64 .github/build.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Linux-x86_64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| crosscompile-linux-aarch64: | |
| name: Cross-Compile Linux aarch64 (LTS) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== Host CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| .github/dockcross/dockcross-linux-arm64-lts .github/build.sh "-DOS_NAME=Linux -DOS_ARCH=aarch64" | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Linux-aarch64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| crosscompile-android-aarch64: | |
| name: Cross-Compile Android aarch64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== Host CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| .github/dockcross/dockcross-android-arm64 .github/build.sh "-DANDROID_PLATFORM=android-24 -DOS_NAME=Linux-Android -DOS_ARCH=aarch64" | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Linux-Android-aarch64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| # --------------------------------------------------------------------------- | |
| # Native build jobs — produce release artifacts + run C++ unit tests | |
| # --------------------------------------------------------------------------- | |
| build-macos-arm64-no-metal: | |
| name: Build and Test macOS 15 arm64 (no Metal) | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| sysctl hw.model hw.cachelinesize hw.cpufrequency hw.cachesize hw.physicalcpu hw.logicalcpu hw.packages hw.memsize hw.ncpu 2>/dev/null || true | |
| echo "" | |
| echo "=== Processor Details ===" | |
| system_profiler SPHardwareDataType | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| mvn compile | |
| .github/build.sh -DLLAMA_METAL=OFF -DGGML_NATIVE=OFF -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: macos-15-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| build-macos-arm64-metal: | |
| name: Build and Test macOS 14 arm64 (Metal) | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| sysctl hw.model hw.cachelinesize hw.cpufrequency hw.cachesize hw.physicalcpu hw.logicalcpu hw.packages hw.memsize hw.ncpu 2>/dev/null || true | |
| echo "" | |
| echo "=== Processor Details ===" | |
| system_profiler SPHardwareDataType | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| mvn compile | |
| .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: macos-14-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| build-windows-x86_64: | |
| name: Build and Test Windows 2025 x86_64 (VS 2026) | |
| runs-on: windows-2025-vs2026 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: pwsh | |
| run: | | |
| Write-Host "=== CPU Information (Get-CimInstance - All Properties) ===" | |
| Get-CimInstance Win32_Processor | Select-Object * | Format-List | |
| Write-Host "" | |
| Write-Host "=== CPU Information (systeminfo) ===" | |
| systeminfo | Select-String "Processor" | |
| Write-Host "" | |
| Write-Host "=== CPU Information (Get-ComputerInfo) ===" | |
| Get-ComputerInfo -Property "CsProcessors*" 2>$null || Write-Host "Get-ComputerInfo not available" | |
| - name: Build libraries | |
| shell: cmd | |
| run: | | |
| .github\build.bat -G "Visual Studio 18 2026" -A "x64" -DOS_NAME=Windows -DOS_ARCH=x86_64 -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Windows-x86_64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| build-windows-x86: | |
| name: Build and Test Windows 2025 x86 (VS 2026) | |
| runs-on: windows-2025-vs2026 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: pwsh | |
| run: | | |
| Write-Host "=== CPU Information (Get-CimInstance - All Properties) ===" | |
| Get-CimInstance Win32_Processor | Select-Object * | Format-List | |
| Write-Host "" | |
| Write-Host "=== CPU Information (systeminfo) ===" | |
| systeminfo | Select-String "Processor" | |
| Write-Host "" | |
| Write-Host "=== CPU Information (Get-ComputerInfo) ===" | |
| Get-ComputerInfo -Property "CsProcessors*" 2>$null || Write-Host "Get-ComputerInfo not available" | |
| - name: Build libraries | |
| shell: cmd | |
| run: | | |
| .github\build.bat -G "Visual Studio 18 2026" -A "Win32" -DOS_NAME=Windows -DOS_ARCH=x86 -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Windows-x86-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| # --------------------------------------------------------------------------- | |
| # CI-only jobs — no release artifact, purely for test coverage | |
| # --------------------------------------------------------------------------- | |
| test-cpp-linux-x86_64: | |
| name: C++ Tests Ubuntu Latest x86_64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Display CPU Info | |
| run: | | |
| echo "=== CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - name: Build libraries | |
| run: | | |
| mvn -q compile | |
| .github/build.sh -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| test-macos-arm64-metal-15: | |
| name: Build and Test macOS 15 arm64 (Metal) | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| sysctl hw.model hw.cachelinesize hw.cpufrequency hw.cachesize hw.physicalcpu hw.logicalcpu hw.packages hw.memsize hw.ncpu 2>/dev/null || true | |
| echo "" | |
| echo "=== Processor Details ===" | |
| system_profiler SPHardwareDataType | |
| - name: Build libraries | |
| shell: bash | |
| run: | | |
| mvn compile | |
| .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DGGML_NATIVE=OFF -DBUILD_TESTING=ON | |
| - name: Run C++ unit tests | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Download text generation model | |
| run: curl -L --fail ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} | |
| - name: Download reranking model | |
| run: curl -L --fail ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} | |
| - name: Download draft model | |
| run: curl -L --fail ${DRAFT_MODEL_URL} --create-dirs -o models/${DRAFT_MODEL_NAME} | |
| - name: List files in models directory | |
| run: ls -l models/ | |
| - name: Validate model files | |
| run: bash .github/validate-models.sh | |
| - name: Enable core dumps | |
| run: ulimit -c unlimited | |
| - name: Run Java tests | |
| run: mvn --no-transfer-progress test | |
| - name: Memory after tests | |
| if: always() | |
| run: vm_stat && sysctl hw.memsize hw.physmem | |
| - if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: error-log-macos-15-metal | |
| path: | | |
| ${{ github.workspace }}/hs_err_pid*.log | |
| ${{ github.workspace }}/target/surefire-reports/*.dump | |
| ${{ github.workspace }}/target/surefire-reports/*.dumpstream | |
| if-no-files-found: warn | |
| # --------------------------------------------------------------------------- | |
| # Java test jobs — download release artifact, run mvn test | |
| # --------------------------------------------------------------------------- | |
| test-java-linux-x86_64: | |
| name: Java Tests Ubuntu Latest x86_64 | |
| needs: crosscompile-linux-x86_64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| lscpu | |
| echo "" | |
| echo "=== CPU Details from /proc/cpuinfo ===" | |
| cat /proc/cpuinfo | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: Linux-x86_64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - name: Download text generation model | |
| run: curl -L --fail ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} | |
| - name: Download reranking model | |
| run: curl -L --fail ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} | |
| - name: Download draft model | |
| run: curl -L --fail ${DRAFT_MODEL_URL} --create-dirs -o models/${DRAFT_MODEL_NAME} | |
| - name: List files in models directory | |
| run: ls -l models/ | |
| - name: Validate model files | |
| run: bash .github/validate-models.sh | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Memory before tests | |
| run: free -h | |
| - name: Enable core dumps | |
| run: | | |
| ulimit -c unlimited | |
| echo "${{ github.workspace }}/core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern | |
| - name: Run tests | |
| run: mvn --no-transfer-progress test | |
| - uses: actions/upload-artifact@v7 | |
| if: success() | |
| with: | |
| name: jacoco-report | |
| path: target/site/jacoco/jacoco.xml | |
| if-no-files-found: ignore | |
| - name: Memory after tests | |
| if: always() | |
| run: free -h | |
| - if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: error-log-linux-x86_64 | |
| path: | | |
| ${{ github.workspace }}/hs_err_pid*.log | |
| ${{ github.workspace }}/core.* | |
| ${{ github.workspace }}/target/surefire-reports/*.dump | |
| ${{ github.workspace }}/target/surefire-reports/*.dumpstream | |
| if-no-files-found: warn | |
| test-java-macos-arm64-metal: | |
| name: Java Tests macOS 14 arm64 (Metal) | |
| needs: build-macos-arm64-metal | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| sysctl hw.model hw.cachelinesize hw.cpufrequency hw.cachesize hw.physicalcpu hw.logicalcpu hw.packages hw.memsize hw.ncpu 2>/dev/null || true | |
| echo "" | |
| echo "=== Processor Details ===" | |
| system_profiler SPHardwareDataType | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: macos-14-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - name: Download text generation model | |
| run: curl -L --fail ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} | |
| - name: Download reranking model | |
| run: curl -L --fail ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} | |
| - name: Download draft model | |
| run: curl -L --fail ${DRAFT_MODEL_URL} --create-dirs -o models/${DRAFT_MODEL_NAME} | |
| - name: List files in models directory | |
| run: ls -l models/ | |
| - name: Validate model files | |
| run: bash .github/validate-models.sh | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Memory before tests | |
| run: vm_stat && sysctl hw.memsize hw.physmem | |
| - name: Enable core dumps | |
| run: ulimit -c unlimited | |
| - name: Run tests | |
| run: mvn --no-transfer-progress -Dnet.ladenthin.llama.test.ngl=0 test | |
| - name: Memory after tests | |
| if: always() | |
| run: vm_stat && sysctl hw.memsize hw.physmem | |
| - if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: error-log-macos-14-metal | |
| path: | | |
| ${{ github.workspace }}/hs_err_pid*.log | |
| ${{ github.workspace }}/target/surefire-reports/*.dump | |
| ${{ github.workspace }}/target/surefire-reports/*.dumpstream | |
| if-no-files-found: warn | |
| test-java-macos-arm64-no-metal: | |
| name: Java Tests macOS 15 arm64 (no Metal) | |
| needs: build-macos-arm64-no-metal | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: bash | |
| run: | | |
| echo "=== CPU Information ===" | |
| sysctl hw.model hw.cachelinesize hw.cpufrequency hw.cachesize hw.physicalcpu hw.logicalcpu hw.packages hw.memsize hw.ncpu 2>/dev/null || true | |
| echo "" | |
| echo "=== Processor Details ===" | |
| system_profiler SPHardwareDataType | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: macos-15-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - name: Download text generation model | |
| run: curl -L --fail ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} | |
| - name: Download reranking model | |
| run: curl -L --fail ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} | |
| - name: Download draft model | |
| run: curl -L --fail ${DRAFT_MODEL_URL} --create-dirs -o models/${DRAFT_MODEL_NAME} | |
| - name: List files in models directory | |
| run: ls -l models/ | |
| - name: Validate model files | |
| run: bash .github/validate-models.sh | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Memory before tests | |
| run: vm_stat && sysctl hw.memsize hw.physmem | |
| - name: Enable core dumps | |
| run: ulimit -c unlimited | |
| - name: Run tests | |
| run: mvn --no-transfer-progress test | |
| - name: Memory after tests | |
| if: always() | |
| run: vm_stat && sysctl hw.memsize hw.physmem | |
| - if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: error-log-macos-15-no-metal | |
| path: | | |
| ${{ github.workspace }}/hs_err_pid*.log | |
| ${{ github.workspace }}/target/surefire-reports/*.dump | |
| ${{ github.workspace }}/target/surefire-reports/*.dumpstream | |
| if-no-files-found: warn | |
| test-java-windows-x86_64: | |
| name: Java Tests Windows 2025 x86_64 (VS 2026) | |
| needs: build-windows-x86_64 | |
| runs-on: windows-2025-vs2026 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Display CPU Info | |
| shell: pwsh | |
| run: | | |
| Write-Host "=== CPU Information (Get-CimInstance - All Properties) ===" | |
| Get-CimInstance Win32_Processor | Select-Object * | Format-List | |
| Write-Host "" | |
| Write-Host "=== CPU Information (systeminfo) ===" | |
| systeminfo | Select-String "Processor" | |
| Write-Host "" | |
| Write-Host "=== CPU Information (Get-ComputerInfo) ===" | |
| Get-ComputerInfo -Property "CsProcessors*" 2>$null || Write-Host "Get-ComputerInfo not available" | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: Windows-x86_64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - name: Download text generation model | |
| run: curl -L --fail $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME | |
| - name: Download reranking model | |
| run: curl -L --fail $env:RERANKING_MODEL_URL --create-dirs -o models/$env:RERANKING_MODEL_NAME | |
| - name: Download draft model | |
| run: curl -L --fail $env:DRAFT_MODEL_URL --create-dirs -o models/$env:DRAFT_MODEL_NAME | |
| - name: List files in models directory | |
| run: ls -l models/ | |
| - name: Validate model files | |
| run: .github\validate-models.bat | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Memory before tests | |
| run: Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory,TotalVisibleMemorySize | Format-List | |
| shell: pwsh | |
| - name: Run tests | |
| run: mvn --no-transfer-progress test | |
| - name: Memory after tests | |
| if: always() | |
| run: Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory,TotalVisibleMemorySize | Format-List | |
| shell: pwsh | |
| - if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: windows-output | |
| path: | | |
| ${{ github.workspace }}\hs_err_pid*.log | |
| ${{ github.workspace }}\target\surefire-reports\*.dump | |
| ${{ github.workspace }}\target\surefire-reports\*.dumpstream | |
| ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/**/* | |
| if-no-files-found: warn | |
| # --------------------------------------------------------------------------- | |
| # Package and publish | |
| # --------------------------------------------------------------------------- | |
| package: | |
| name: Package JARs | |
| needs: | |
| - crosscompile-linux-x86_64-cuda | |
| - crosscompile-linux-aarch64 | |
| - crosscompile-android-aarch64 | |
| - build-windows-x86 | |
| - test-cpp-linux-x86_64 | |
| - test-macos-arm64-metal-15 | |
| - test-java-linux-x86_64 | |
| - test-java-macos-arm64-metal | |
| - test-java-macos-arm64-no-metal | |
| - test-java-windows-x86_64 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: "*-libraries" | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - if: needs.crosscompile-linux-x86_64-cuda.outputs.built == 'true' | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: linux-libraries-cuda | |
| path: ${{ github.workspace }}/src/main/resources_linux_cuda/net/ladenthin/llama/ | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: '8' | |
| - name: Build JARs | |
| run: mvn --batch-mode --no-transfer-progress -P release -Dmaven.test.skip=true -Dgpg.skip=true package | |
| - name: Upload JARs | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: llama-jars | |
| path: target/*.jar | |
| report: | |
| name: Report | |
| needs: [package] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: { java-version: '8', distribution: zulu } | |
| - uses: actions/download-artifact@v8 | |
| with: { name: jacoco-report, path: target/site/jacoco/ } | |
| continue-on-error: true | |
| - uses: advanced-security/maven-dependency-submission-action@v5 | |
| - name: Coveralls | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: target/site/jacoco/jacoco.xml | |
| format: jacoco | |
| continue-on-error: true | |
| - name: Codecov | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: target/site/jacoco/jacoco.xml | |
| continue-on-error: true | |
| check-snapshot: | |
| name: "Check: main branch / SNAPSHOT" | |
| needs: [report] | |
| runs-on: ubuntu-latest | |
| if: >- | |
| (github.event_name == 'push' && github.ref == 'refs/heads/main') || | |
| (github.event_name == 'workflow_dispatch' && !startsWith(github.ref, 'refs/tags/v')) | |
| steps: | |
| - name: Confirm snapshot ref | |
| run: echo "Confirmed on snapshot ref ${{ github.ref }}" | |
| check-tag: | |
| name: "Check: v* tag" | |
| needs: [report] | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - name: Confirm tag ref | |
| run: echo "Confirmed on tag ${{ github.ref }}" | |
| github-snapshot: | |
| name: Update Snapshot Pre-release on GitHub | |
| needs: [check-snapshot] | |
| if: needs.check-snapshot.result == 'success' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: llama-jars | |
| path: snapshot-assets/ | |
| - name: Update snapshot pre-release | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh release view snapshot --repo ${{ github.repository }} 2>/dev/null \ | |
| || gh release create snapshot \ | |
| --repo ${{ github.repository }} \ | |
| --prerelease \ | |
| --title "Snapshot (latest)" \ | |
| --notes "Latest snapshot build from the main branch." | |
| gh release upload snapshot snapshot-assets/* \ | |
| --repo ${{ github.repository }} \ | |
| --clobber | |
| publish-snapshot: | |
| name: Publish Snapshot to Central | |
| needs: [github-snapshot, check-snapshot] | |
| if: needs.check-snapshot.result == 'success' | |
| runs-on: ubuntu-latest | |
| environment: maven-central | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: llama-jars | |
| path: snapshot-jars/ | |
| - uses: actions/setup-java@v5 | |
| with: | |
| java-version: '8' | |
| distribution: zulu | |
| server-id: central | |
| server-username: MAVEN_USERNAME | |
| server-password: MAVEN_PASSWORD | |
| - name: Deploy snapshot | |
| run: | | |
| VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) | |
| mvn --batch-mode deploy:deploy-file \ | |
| -Durl=https://central.sonatype.com/repository/maven-snapshots \ | |
| -DrepositoryId=central \ | |
| -Dfile=snapshot-jars/llama-${VERSION}.jar \ | |
| -DpomFile=pom.xml \ | |
| -Dsources=snapshot-jars/llama-${VERSION}-sources.jar \ | |
| -Djavadoc=snapshot-jars/llama-${VERSION}-javadoc.jar | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.CENTRAL_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN }} | |
| github-release: | |
| name: Attach Binaries to GitHub Release | |
| needs: [check-tag] | |
| if: needs.check-tag.result == 'success' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: llama-jars | |
| path: release-assets/ | |
| - name: Upload release assets | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| files: release-assets/* | |
| publish-release: | |
| name: Publish Release to Central | |
| if: needs.check-tag.result == 'success' && github.event.inputs.release_to_maven_central == 'true' | |
| needs: [github-release, check-tag, crosscompile-linux-x86_64-cuda] | |
| runs-on: ubuntu-latest | |
| environment: maven-central | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: "*-libraries" | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - if: needs.crosscompile-linux-x86_64-cuda.outputs.built == 'true' | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: linux-libraries-cuda | |
| path: ${{ github.workspace }}/src/main/resources_linux_cuda/net/ladenthin/llama/ | |
| - name: Set up Maven Central Repository | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: '17' | |
| distribution: 'zulu' | |
| server-id: central | |
| server-username: MAVEN_USERNAME | |
| server-password: MAVEN_PASSWORD | |
| gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | |
| gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
| - name: Publish release | |
| run: mvn --batch-mode -P release -Dmaven.test.skip=true deploy | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.CENTRAL_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN }} | |
| MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} |