Utilize shared nix volume #51
No reviewers
Labels
No labels
blocked
bug
duplicate
effort
high
effort
low
effort
medium
effort
minimal
enhancement
help wanted
invalid
pr
feedback
pr
reviewing
question
status
backlog
status
document
status
done
status
implement
status
pending
status
planning
status
reviewing
waiting
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tepichord/milner!51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/26-shared-nix-volume"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #26
Automated PR created by forgejo-done adapter.
Add a `nix` StorageClass backed by /var/mnt/data/nix/shared via a constant pathPattern and the allowUnsafePathPattern annotation. local-path-provisioner v0.0.37 reads the annotation from the StorageClass object (not a chart parameter) to bypass the {{ .PVC.Namespace }}/{{ .PVC.Name }} path requirement. Reclaim policy is Retain — Delete would rm -rf the shared store. The backing directory is the existing 100 GiB data disk; no new qcow2 or Terraform resource is added. Includes: - storage/values.yaml: full chart values with persistent/ephemeral/nix - storage/main.tf: Terraform root for test assertions - storage/tests/plan.tftest.hcl: nix_class_is_one_shared_directory - gitops values: nix class added to storageClassConfigs Refs: #26Ensure that CI tests use a nix image and call nix develop and are able to utilize the shared volume for it's builds.
Resolve merge conflicts with main.
Work needed
@ -0,0 +21,4 @@# Ignored by local-path-provisioner: the store shares the data disk's# capacity pool with the `persistent` PVCs (OPERATIONS.md §10e).requests:storage: 30GiHonestly the nix store can grow large, make this 200Gi
@ -0,0 +9,4 @@}# local-path-provisioner v0.0.37 serves three StorageClasses (persistent,# ephemeral, nix) backed by the worker's shared 100 GiB data disk. Flux owns2 TiB now
The woodpecker build failed:
The cause is in PR #51's own .woodpecker/gates.yaml: the test step gains image: nixos/nix:2.35.2 + a volumes: mount for the shared nix store. Woodpecker v3 splits the old
single "trusted" flag into three independent gates — network, security, volumes — and tepichord/milner is currently:
security: true is why the privileged: true buildah steps in my PR #70 ran fine; volumes: false is why this branch's config is rejected outright. So this isn't a webhook,
agent, or secret problem — the repo just isn't allowed to mount volumes.
The fix is a one-field repo setting: turn on Volumes trust (repo → Settings → Trusted → Volumes, or PATCH /api/repos/2 with "trusted": {"network": false, "volumes": true,
"security": true}).
Naina:
trusted.volumesis the one item in #9488 that cannot be fixed in this branch: it is a Woodpecker repo setting, not repo content. I re-checkedGET /api/repos/2and it still reports{"network": false, "volumes": false, "security": true}, andPATCH /api/repos/2requires a Woodpecker admin token — this pipeline only carriesFORGEJO_TOKEN, which Woodpecker rejects (401from/api/user). So the switch has to be turned on from repo → Settings → Trusted → Volumes (or the PATCH quoted above) by someone with Woodpecker admin access; no step in this pipeline can do it.Merge changes from main, the woodpecker repo setting has been changed.