5 Commits

Author SHA1 Message Date
ec84a7d331 Merge pull request #112 from lordmathis/fix/auth-middleware
fix: Remove duplicate auth middleware init
2025-12-17 19:09:12 +01:00
b45219a01e Reuse handler auth middleware 2025-12-17 19:06:04 +01:00
463bb561e1 Merge pull request #111 from lordmathis/fix/cgo-enabled-build
fix: Add multiplatform CGO_ENABLED=1 build
2025-12-17 14:38:27 +01:00
ebdb9143c0 Remove separate windows build step 2025-12-17 14:32:10 +01:00
4269d04381 Update release.yaml 2025-12-17 14:25:50 +01:00
2 changed files with 33 additions and 18 deletions

View File

@@ -45,15 +45,23 @@ jobs:
build: build:
name: Build Binaries name: Build Binaries
needs: build-webui needs: build-webui
runs-on: ubuntu-latest runs-on: ${{ matrix.runner }}
strategy: strategy:
matrix: matrix:
goos: [linux, windows, darwin] include:
goarch: [amd64, arm64] - goos: linux
exclude: goarch: amd64
# Windows ARM64 support is limited runner: ubuntu-latest
- goos: windows - goos: linux
goarch: arm64 goarch: arm64
runner: ubuntu-latest
cc: aarch64-linux-gnu-gcc
- goos: darwin
goarch: arm64
runner: macos-latest
- goos: windows
goarch: amd64
runner: windows-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -70,11 +78,19 @@ jobs:
name: webui-dist name: webui-dist
path: webui/dist/ path: webui/dist/
- name: Install cross-compilation tools (Linux ARM64 only)
if: matrix.cc != ''
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Build binary - name: Build binary
env: env:
GOOS: ${{ matrix.goos }} GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }} GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: 0 CGO_ENABLED: 1
CC: ${{ matrix.cc }}
shell: bash
run: | run: |
# Set binary extension for Windows # Set binary extension for Windows
BINARY_NAME="llamactl" BINARY_NAME="llamactl"
@@ -91,8 +107,10 @@ jobs:
ARCHIVE_OS="macos" ARCHIVE_OS="macos"
fi fi
ARCHIVE_NAME="llamactl-${{ github.ref_name }}-${ARCHIVE_OS}-${{ matrix.goarch }}" ARCHIVE_NAME="llamactl-${{ github.ref_name }}-${ARCHIVE_OS}-${{ matrix.goarch }}"
if [ "${{ matrix.goos }}" = "windows" ]; then if [ "${{ matrix.goos }}" = "windows" ]; then
zip "${ARCHIVE_NAME}.zip" "${BINARY_NAME}" # Use 7z on Windows (pre-installed)
7z a "${ARCHIVE_NAME}.zip" "${BINARY_NAME}"
echo "ASSET_PATH=${ARCHIVE_NAME}.zip" >> $GITHUB_ENV echo "ASSET_PATH=${ARCHIVE_NAME}.zip" >> $GITHUB_ENV
else else
tar -czf "${ARCHIVE_NAME}.tar.gz" "${BINARY_NAME}" tar -czf "${ARCHIVE_NAME}.tar.gz" "${BINARY_NAME}"

View File

@@ -26,9 +26,6 @@ func SetupRouter(handler *Handler) *chi.Mux {
MaxAge: 300, MaxAge: 300,
})) }))
// Add API authentication middleware
authMiddleware := NewAPIAuthMiddleware(handler.cfg.Auth, handler.authStore)
if handler.cfg.Server.EnableSwagger { if handler.cfg.Server.EnableSwagger {
r.Get("/swagger/*", httpSwagger.Handler( r.Get("/swagger/*", httpSwagger.Handler(
httpSwagger.URL("/swagger/doc.json"), httpSwagger.URL("/swagger/doc.json"),
@@ -38,8 +35,8 @@ func SetupRouter(handler *Handler) *chi.Mux {
// Define routes // Define routes
r.Route("/api/v1", func(r chi.Router) { r.Route("/api/v1", func(r chi.Router) {
if authMiddleware != nil && handler.cfg.Auth.RequireManagementAuth { if handler.authMiddleware != nil && handler.cfg.Auth.RequireManagementAuth {
r.Use(authMiddleware.ManagementAuthMiddleware()) r.Use(handler.authMiddleware.ManagementAuthMiddleware())
} }
r.Get("/version", handler.VersionHandler()) r.Get("/version", handler.VersionHandler())
@@ -107,8 +104,8 @@ func SetupRouter(handler *Handler) *chi.Mux {
r.Route("/v1", func(r chi.Router) { r.Route("/v1", func(r chi.Router) {
if authMiddleware != nil && handler.cfg.Auth.RequireInferenceAuth { if handler.authMiddleware != nil && handler.cfg.Auth.RequireInferenceAuth {
r.Use(authMiddleware.InferenceAuthMiddleware()) r.Use(handler.authMiddleware.InferenceAuthMiddleware())
} }
r.Get("/models", handler.OpenAIListInstances()) // List instances in OpenAI-compatible format r.Get("/models", handler.OpenAIListInstances()) // List instances in OpenAI-compatible format
@@ -135,8 +132,8 @@ func SetupRouter(handler *Handler) *chi.Mux {
// Private Routes // Private Routes
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
if authMiddleware != nil && handler.cfg.Auth.RequireInferenceAuth { if handler.authMiddleware != nil && handler.cfg.Auth.RequireInferenceAuth {
r.Use(authMiddleware.InferenceAuthMiddleware()) r.Use(handler.authMiddleware.InferenceAuthMiddleware())
} }
// This handler auto starts the server if it's not running // This handler auto starts the server if it's not running