Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
066ad6f
feat: add E2E infrastructure with OCI images, Helm chart, and test crate
fullzer4 Jun 15, 2026
2a664fe
fix: use git CLI for cargo-deny advisory-db fetch
fullzer4 Jun 15, 2026
54a0d30
fix: clear corrupted advisory-db cache before cargo deny
fullzer4 Jun 15, 2026
f17748e
fix: run advisory-db cleanup inside nix develop shell
fullzer4 Jun 15, 2026
3eb447b
fix: revert git-fetch-with-cli and use cargo deny fetch before check
fullzer4 Jun 15, 2026
e267a35
fix: add git to devShell for cargo-deny advisory-db fetch
fullzer4 Jun 15, 2026
dc05a5f
fix: revert to contents API for buildLayeredImage and pin flake.lock
fullzer4 Jun 15, 2026
ff26ee2
fix: correct crane source path from ../.. to ./.. for nix store resol…
fullzer4 Jun 15, 2026
d7b1c13
fix: use self instead of craneLib.path for flake source resolution
fullzer4 Jun 15, 2026
e6c19ad
fix: add clang and lld to nix build inputs for cargo linker config
fullzer4 Jun 16, 2026
a18ae02
fix: include proto files in crane source filter and set pname
fullzer4 Jun 16, 2026
71a7286
perf: build all images in single nix derivation to share cache
fullzer4 Jun 16, 2026
4504fc3
fix: use mock-eval image for eval service in e2e tests
fullzer4 Jun 16, 2026
989ee74
fix: add debug output for CSI DaemonSet rollout failure
fullzer4 Jun 16, 2026
0281c47
fix: include runtime shared libraries in OCI images for dynamic linking
fullzer4 Jun 16, 2026
ce5f492
fix: set LD_LIBRARY_PATH in OCI images for dynamic linker resolution
fullzer4 Jun 16, 2026
c74488d
fix: mock-eval returns error for nonexistent flake refs in e2e tests
fullzer4 Jun 16, 2026
b8c2ffb
feat: configure real nix eval with nix.conf, writable store volumes, …
fullzer4 Jun 16, 2026
fa6d190
feat: add real E2E test script with darkhttpd from nixpkgs
fullzer4 Jun 16, 2026
c91d8dd
feat: add niphas test app with landing page and polished E2E script
fullzer4 Jun 16, 2026
ad9b42b
feat: add VitePress docs site with Nix build integration
fullzer4 Jun 16, 2026
51bbf14
feat: replace VitePress with mdBook for docs site
fullzer4 Jun 16, 2026
0d8cb10
chore: remove root documentation files
fullzer4 Jun 16, 2026
7f419c1
chore: remove LICENSE
fullzer4 Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 83 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,93 @@ jobs:
name: "L3 · E2E Kind"
needs: [eval-http, csi-grpc]
runs-on: ubuntu-latest
if: false # placeholder — enable when container images exist
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main

# Build all OCI images in a single nix build (shared cargoArtifacts)
- name: Build images
run: nix build .#all-images -o result-images

# Create kind cluster
- uses: helm/kind-action@v1
with:
cluster_name: niphas-test
- run: nix develop -c cargo nextest run --workspace --test 'e2e_*'
config: hack/kind-config.yaml

# Load images into kind
- name: Load images into kind
run: |
kind load image-archive result-images/operator.tar.gz --name niphas-test
kind load image-archive result-images/eval.tar.gz --name niphas-test
kind load image-archive result-images/csi.tar.gz --name niphas-test
kind load image-archive result-images/runner.tar.gz --name niphas-test
kind load image-archive result-images/mock-eval.tar.gz --name niphas-test

# Label nodes for CSI
- name: Label nodes
run: kubectl label nodes --all niphas.io/store=true

# Verify CRD freshness
- name: Verify CRD freshness
run: |
nix develop -c cargo run --bin niphas-crd-gen 2>/dev/null | grep -v '^niphas devShell ready$' | diff charts/niphas/crds/niphasworkloads.yaml -

# Install Helm chart
- name: Install niphas
run: |
nix develop -c helm install niphas charts/niphas \
--namespace niphas-system \
--create-namespace \
--set operator.image.pullPolicy=Never \
--set operator.image.tag=dev \
--set eval.image.repository=ghcr.io/fullzer4/niphas-mock-eval \
--set eval.image.pullPolicy=Never \
--set eval.image.tag=dev \
--set csi.image.pullPolicy=Never \
--set csi.image.tag=dev \
--set runner.image.tag=dev

# Wait for rollout
- name: Wait for deployments
run: |
kubectl -n niphas-system rollout status deployment/niphas-operator --timeout=120s
kubectl -n niphas-system rollout status deployment/niphas-eval --timeout=120s
kubectl -n niphas-system rollout status daemonset/niphas-csi --timeout=120s

# Debug on failure
- name: Debug pods on failure
if: failure()
run: |
echo "=== Pod status ==="
kubectl -n niphas-system get pods -o wide
echo "=== Pod descriptions ==="
kubectl -n niphas-system describe pods
echo "=== CSI logs ==="
kubectl -n niphas-system logs -l app.kubernetes.io/name=niphas-csi --all-containers --tail=50 || true
echo "=== Operator logs ==="
kubectl -n niphas-system logs -l app.kubernetes.io/name=niphas-operator --tail=50 || true
echo "=== Eval logs ==="
kubectl -n niphas-system logs -l app.kubernetes.io/name=niphas-eval --tail=50 || true
echo "=== Events ==="
kubectl -n niphas-system get events --sort-by=.lastTimestamp

# Create e2e namespace
- name: Create e2e namespace
run: kubectl create namespace niphas-e2e

# Port-forward
- name: Port-forward services
run: |
kubectl -n niphas-system port-forward svc/niphas-eval 8443:8443 &
kubectl -n niphas-system port-forward deployment/niphas-operator 8080:8080 &
sleep 5

# Run e2e tests
- name: Run E2E tests
env:
OPERATOR_HEALTH_URL: http://localhost:8080/healthz
EVAL_HEALTH_URL: http://localhost:8443/healthz
E2E_NAMESPACE: niphas-e2e
run: nix develop -c cargo nextest run -p niphas-e2e --test '*'
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ result-*
*.swp
*.swo
*~
docs/book/
16 changes: 16 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ members = [
"crates/niphas-operator",
"crates/niphas-csi",
"crates/niphas-mesh",
"crates/niphas-e2e",
]

[workspace.package]
Expand Down
14 changes: 14 additions & 0 deletions charts/niphas/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v2
name: niphas
description: Nix-native platform for Kubernetes
version: 0.1.0
appVersion: "0.1.0"
type: application
keywords:
- nix
- kubernetes
- operator
- csi
home: https://github.com/fullzer4/niphas
sources:
- https://github.com/fullzer4/niphas
Loading
Loading