Expand README with features section and API documentation #246
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: Build, Test and Release | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| release_to_maven_central: | |
| description: 'Release to Maven Central (true/false)' | |
| required: false | |
| default: 'false' | |
| enable_cuda_build: | |
| description: 'Build CUDA artifacts — slow, auto-enabled on release events. See CLAUDE.md "Optional CUDA build flag".' | |
| required: false | |
| default: 'false' | |
| release: | |
| types: [ created ] | |
| 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" | |
| 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) | |
| # Slow job (CUDA toolkit install + nvcc). Skipped on PRs to keep the feedback | |
| # loop fast. See CLAUDE.md "Optional CUDA build flag" for the rationale and | |
| # the revert path once the feedback loop is no longer the bottleneck. | |
| if: github.event_name == 'release' || github.event.inputs.enable_cuda_build == 'true' | |
| 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-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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@v6 | |
| with: | |
| name: macos-14-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| build-windows-x86_64: | |
| name: Build and Test Windows 2022 x86_64 | |
| runs-on: windows-2022 | |
| 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 17 2022" -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@v6 | |
| with: | |
| name: Windows-x86_64-libraries | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| build-windows-x86: | |
| name: Build and Test Windows 2022 x86 | |
| runs-on: windows-2022 | |
| 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 17 2022" -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@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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 | |
| - name: Memory after tests | |
| if: always() | |
| run: free -h | |
| - if: failure() | |
| uses: actions/upload-artifact@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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@v6 | |
| 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 Latest x86_64 | |
| needs: build-windows-x86_64 | |
| runs-on: windows-latest | |
| 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@v6 | |
| 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@v6 | |
| 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 | |
| # Run even when the CUDA job was skipped (PR / non-release dispatch without | |
| # enable_cuda_build), but still fail the package step if any required job | |
| # actually failed or was cancelled. | |
| if: | | |
| always() && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: "*-libraries" | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - if: needs.crosscompile-linux-x86_64-cuda.result == 'success' | |
| uses: actions/download-artifact@v6 | |
| 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@v6 | |
| with: | |
| name: llama-jars | |
| path: target/*.jar | |
| publish: | |
| # Manual dispatch must set BOTH release_to_maven_central=true AND | |
| # enable_cuda_build=true, otherwise the linux-libraries-cuda artifact | |
| # download below would fail. Release events always satisfy this since | |
| # the CUDA job runs unconditionally on `release`. | |
| if: ${{ github.event_name == 'release' || (github.event.inputs.release_to_maven_central == 'true' && github.event.inputs.enable_cuda_build == 'true') }} | |
| needs: [ package ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: "*-libraries" | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/src/main/resources/net/ladenthin/llama/ | |
| - uses: actions/download-artifact@v6 | |
| 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: ossrh | |
| server-username: MAVEN_USERNAME | |
| server-password: MAVEN_PASSWORD | |
| gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} | |
| gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
| - name: Publish package | |
| run: mvn --batch-mode -P release -Dmaven.test.skip=true deploy | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} | |
| MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} |