summaryrefslogtreecommitdiff
path: root/f3s/beets-art/helm-chart
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-13 20:19:39 +0300
committerPaul Buetow <paul@buetow.org>2026-05-13 20:19:39 +0300
commitf01959bc1157082709de501c902f8af0c263b1a3 (patch)
tree3ca6b465acf52a6dc1aca81411032508bbad2923 /f3s/beets-art/helm-chart
parent4b583f7d4ee660b7b2e74603764d5e121c7ca549 (diff)
f3s/beets-art: fix BEETSDIR being read-only (state.pickle write failure)
The ConfigMap mount at /etc/beets is kernel-enforced read-only, so beets could not write its incremental import state file (state.pickle), which broke incremental: yes — every nightly run would re-walk the entire library. Fix: point BEETSDIR at the writable state PVC (/state) and pass -c /etc/beets/config.yaml on every beet invocation so the ConfigMap is still the single source of truth for config. Also fix the Justfile run-now recipe to use a bash shebang so $() works. Amp-Thread-ID: https://ampcode.com/threads/T-019e223a-d137-705e-879b-84130c0e78ea Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'f3s/beets-art/helm-chart')
-rw-r--r--f3s/beets-art/helm-chart/templates/cronjob.yaml20
1 files changed, 13 insertions, 7 deletions
diff --git a/f3s/beets-art/helm-chart/templates/cronjob.yaml b/f3s/beets-art/helm-chart/templates/cronjob.yaml
index 6f969e9..fb37a7e 100644
--- a/f3s/beets-art/helm-chart/templates/cronjob.yaml
+++ b/f3s/beets-art/helm-chart/templates/cronjob.yaml
@@ -50,11 +50,14 @@ spec:
image: lscr.io/linuxserver/beets:latest
imagePullPolicy: IfNotPresent
env:
- # Tell beets to read config from the ConfigMap mount instead
- # of its default ~/.config/beets, so the PVC only stores
- # mutable state (library.db, logs).
+ # BEETSDIR must be writable: beets stores its incremental
+ # import state (state.pickle) there alongside the config.
+ # The ConfigMap mount at /etc/beets is read-only (kernel-
+ # enforced for ConfigMap volumes), so point BEETSDIR at the
+ # state PVC and pass `-c` on each command to load the
+ # ConfigMap-supplied config.yaml.
- name: BEETSDIR
- value: /etc/beets
+ value: /state
# Override the linuxserver s6 entrypoint; we just need the
# `beet` CLI for a one-shot job. Running as root (the image
# default when s6 is bypassed) so we can write into the NFS
@@ -65,20 +68,23 @@ spec:
set -u
echo "=== $(date -u) beets-art sweep starting ==="
+ CONF=/etc/beets/config.yaml
+ BEET="beet -c $CONF"
+
# 1. Register any new albums. -A skips autotag (we trust
# the existing tags); auto fetchart/embedart fire here
# for newly imported albums via config.
echo "--- import (incremental) ---"
- beet import -A -q --quiet-fallback=asis /music || \
+ $BEET import -A -q --quiet-fallback=asis /music || \
echo "import returned non-zero (continuing)"
# 2. Backfill external cover.jpg for albums missing it.
echo "--- fetchart (backfill) ---"
- beet fetchart || echo "fetchart returned non-zero (continuing)"
+ $BEET fetchart || echo "fetchart returned non-zero (continuing)"
# 3. Embed art into audio files where missing.
echo "--- embedart (backfill) ---"
- beet embedart || echo "embedart returned non-zero (continuing)"
+ $BEET embedart || echo "embedart returned non-zero (continuing)"
echo "=== $(date -u) beets-art sweep finished ==="
volumeMounts: