mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-13 18:28:03 +02:00
L'image embarque loki-rs (étape Alpine, binaire musl statique) et l'entrypoint en fait la porte d'entrée : `loki-rs serve` sur le port public, le Go derrière lui sur 127.0.0.1:8091. LOKI_FACADE=0 revient à l'ancien schéma si la façade pose problème. Au démarrage, le loki-rs de l'image installe la dernière release « rolling » dans /data/bin/<build>/ ; l'entrypoint prend ensuite loki et loki-rs du même dossier (which-bin), et un lien dans /usr/local/sbin fait que `docker exec loki loki …` vise lui aussi la version installée. C'est toujours le loki-rs de l'image qui met à jour : un binaire publié défectueux ne peut pas bloquer le correctif suivant. CI : job Rust (fmt, clippy -D warnings, tests). Publication : la release « rolling » part à chaque push sur main avec le même numéro de run que l'image (LOKI_BUILD) ; IMAGE_ABI, source unique, empêche d'installer des binaires qui exigent une image plus récente. manifest.json est envoyé en dernier. Message corrigé quand l'image est plus récente que la release : rien à tirer dans ce cas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
70 lines
2.4 KiB
YAML
70 lines
2.4 KiB
YAML
# CI : build + vet + gofmt + tests sur chaque push/PR.
|
|
name: ci
|
|
on:
|
|
push:
|
|
branches: ["**"]
|
|
pull_request:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- name: gofmt
|
|
run: test -z "$(gofmt -l .)" || (gofmt -l . && exit 1)
|
|
- run: go vet ./...
|
|
- run: go build ./...
|
|
- run: go test ./...
|
|
# staticcheck : le projet est à zéro avertissement, et doit le rester.
|
|
# Les règles écartées et leur raison vivent dans staticcheck.conf.
|
|
- name: staticcheck
|
|
run: go run honnef.co/go/tools/cmd/staticcheck@latest ./...
|
|
- name: cross-compile (cibles release Linux + Windows)
|
|
run: |
|
|
# darwin n'est pas ici : depuis v0.5.4 l'icône de barre de menus passe
|
|
# par Cocoa (CGO) → les cibles macOS se compilent sur un runner Apple
|
|
# (job « macos » ci-dessous, comme dans release.yml).
|
|
for t in linux/amd64 linux/arm64 windows/amd64 windows/arm64; do
|
|
GOOS=${t%/*} GOARCH=${t#*/} CGO_ENABLED=0 go build -o /dev/null ./cmd/loki
|
|
done
|
|
|
|
# Façade Rust (rust/loki-rs) : même exigence que le Go, zéro avertissement.
|
|
rust:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: rust
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: clippy, rustfmt
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: rust
|
|
- run: cargo fmt --all --check
|
|
- run: cargo clippy --all-targets --locked -- -D warnings
|
|
- run: cargo test --locked
|
|
|
|
macos:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
- run: go vet ./...
|
|
# Les tests tournent AUSSI ici : certains chemins ne s'exécutent que sur un
|
|
# vrai système de fichiers Unix (extraction des liens symboliques des
|
|
# archives llama.cpp, que Windows résout par une copie de repli).
|
|
- run: go test ./...
|
|
- name: build macOS (CGO, arm64 + amd64)
|
|
run: |
|
|
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o /dev/null ./cmd/loki
|
|
CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 \
|
|
CGO_CFLAGS="-arch x86_64" CGO_LDFLAGS="-arch x86_64" \
|
|
go build -o /dev/null ./cmd/loki
|