Commit Graph
19 Commits
Author SHA1 Message Date
jklein 6b0d8c9232 ytdlp-web-player: new chart with an optional oauth2-proxy subchart (1.0.0+upv1.2.0)
Deploys matszwe02/ytdlp_web_player, a Flask app that fetches videos with
yt-dlp, transcodes them with ffmpeg and serves them as HLS. It ships no
authentication of any kind, so the chart carries a preconfigured oauth2-proxy
as an optional subchart, in the data path in front of the app.

This is the first chart in the repo with a dependency, so the rule "charts
have no dependencies" falls here. It is replaced in CLAUDE.md and README.md by
a bar: a dependency has to be optional and off by default, upstream's chart is
consumed as it comes (documented where it falls short of our conventions,
never patched), and the price is written down - above all that a subchart is
invisible to everything downstream watching Helm release versions, so a new
proxy release only reaches a cluster when this chart is republished.

CI learns the dependency in five places, not the three the plan expected:
helm lint, package, template and install all exit 1 while charts/ is unfilled,
so ci/helm-dependencies.sh runs before lint and package in validate-charts.yml,
before package in publish-helm-chart.yml, and inside run-install-test.sh,
run-trivy-config.sh and run-quantity-render-test.sh - the last of which renders
every chart on every PR and would have gone red first.

Notable chart decisions, each measured rather than assumed:

- The image has no USER and runs as root by default, but not by necessity: it
  runs under an arbitrary uid with readOnlyRootFilesystem and the full
  hardening baseline. Only the pinned uid is a deviation, and it is documented.
- Two emptyDirs, each justified separately. /data holds the video cache
  (DATA_PATH). /tmp is NOT mounted - measured across metadata extraction, HLS
  transcoding, sprite generation and audio extraction, the image never writes
  there. What it does write is $HOME/.cache, so /cache is mounted with HOME and
  XDG_CACHE_HOME pointed at it; without it yt-dlp re-downloads its JavaScript
  challenge-solver from github.com on every extraction.
- The proxy is wired through config.configFile, the only value the subchart
  passes through tpl - config.upstreams is emitted with toJson and would carry
  a literal {{ .Release.Name }} into the manifest.
- Rendering aborts when this chart's Ingress and the proxy's claim the same
  host: ingress-nginx rejects the second one and a Fleet bundle then sits in
  ErrApplied until forceSyncGeneration is bumped.

Fixes #214
2026-08-30 17:34:49 +02:00
jklein 0fb6c30466 publish: read registry credentials from step outputs and validate them
Two defects kept the publish broken after the load-secrets-action v5 bump
in #140.

v5 no longer exports the loaded values as environment variables for later
steps the way v4 did; only the step outputs carry them. Every
"${{ env.JK_CR_* }}" reference therefore resolved to an empty string from
that bump on, and nothing reported it - the loading step logs "Populating
variable" and stays green either way. #149 moved three of the four
references to steps.<id>.outputs but left "-u ${{ env.JK_CR_USERNAME }}"
on the old form, and piped the username instead of the token into
--password-stdin.

The second defect is why this surfaced as a terminal error: an empty value
collapsed into a missing argument instead of failing. With an empty
username, "-u" swallowed the following "--password-stdin", helm stopped
reading the password from stdin, prompted interactively and died with
"inappropriate ioctl for device".

All four values now come from steps.<id>.outputs, are mapped into each
step's own env block and used as quoted shell variables guarded with ":?".
An empty or unset value aborts the job naming the op:// path to fix,
quoting keeps it from shifting arguments, and the token no longer appears
on the command line.
2026-08-24 14:03:09 +02:00
jklein f6f04d27fe fix(publish-action): fixed 1Password secret access 2026-08-24 13:47:01 +02:00
jklein e730a81b17 Merge pull request #140 from jk-cluster/renovate/1password-load-secrets-action-5.x
Update 1password/load-secrets-action action to v5
2026-08-24 09:20:12 +00:00
jklein a176c7576c Merge pull request #142 from jk-cluster/renovate/azure-setup-helm-5.x
Update azure/setup-helm action to v5
2026-08-24 09:20:01 +00:00
jlab-renovate[bot] 5026622763 Update azure/setup-helm action to v5 2026-08-24 00:01:19 +00:00
jlab-renovate[bot] 35d381432c Update actions/checkout action to v7 2026-08-23 23:01:23 +00:00
jlab-renovate[bot] f65f31bed8 Update 1password/load-secrets-action action to v5 2026-08-23 23:01:15 +00:00
jklein 1b56c4bdb2 Upgrade actions/checkout from v2 to v4
Fixes #6
2026-08-21 16:47:29 +02:00
jklein f84f14d4da feat(publish-workflow): fixes 2026-02-23 14:18:27 +01:00
jklein 7b77dc3e27 feat(publish-workflow): fixes 2026-02-23 13:32:48 +01:00
jklein d2fc0f0474 feat(publish-workflow): fixes 2026-02-23 13:06:03 +01:00
jklein 1ac6a8519f feat(chart publishing): added auth to registry 2026-02-23 12:10:02 +01:00
jklein 5fb0571321 feat(chart publishing): added initial publish-workflow 2026-02-23 11:55:13 +01:00
jklein f5e41a12cf Revert "refactor(workflows): moved publish-workflows to separate directory"
This reverts commit 04303c664c.
2026-02-20 10:49:12 +01:00
jklein 04303c664c refactor(workflows): moved publish-workflows to separate directory 2026-02-20 10:44:17 +01:00
jklein 1e1855c9e6 feat(workflows): moved app-version change to separate job 2026-02-19 15:23:38 +01:00
jklein 3ed6bc1f42 feat(publish-workflow): added publish-workflow for calibre-web-automated 2026-02-19 14:39:58 +01:00
jklein 7a8a14bde8 feat(publish-workflow): added general publish-workflow 2026-02-19 14:26:17 +01:00