docs: workflow, Dockerfile and brand-tool comments say what each does (#6277)
release.yml, the Dockerfile and tools/gen-brand-assets.py keep every constraint their comments explain (the tag map, the gate, immutable tags, the shared-daemon Postgres guard, the version/channel split) and drop the history around them: rule and family-idea numbers, issue and run ids, dates, an operator quote, the "this used to say the opposite" paragraphs and one-runner timings. Corrected: the Dockerfile said client/ is filled on tag pushes only; every build fills it (dev and tag push bundle their own APK, main bundles the latest release's). Only full-line `#` comments changed: non-comment lines are identical to HEAD in all three files, and the three run: scripts whose text changed differ only in shell comment lines. The release guard tests match raw workflow text; none of their required or forbidden strings appear in the new comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+12
-11
@@ -19,11 +19,10 @@ ENV CGO_ENABLED=0
|
||||
# (YYYY.MM.DD.HHMM) and the lane's channel; a local `docker build` falls back
|
||||
# to "dev"/"local". Both are surfaced at /healthz.
|
||||
#
|
||||
# These are two values on purpose (family rule 149): the same commit built on
|
||||
# dev and on main reports the same NAME and differs only in CHANNEL. Folding
|
||||
# the channel into the version string is what the rule forbids — the version
|
||||
# used to BE the channel word here ("main"/"dev"), which meant two dev images
|
||||
# eight weeks apart were indistinguishable.
|
||||
# These are two values on purpose: the same commit built on dev and on main
|
||||
# reports the same NAME and differs only in CHANNEL. Folding the channel
|
||||
# into the version string would make two dev images eight weeks apart
|
||||
# indistinguishable.
|
||||
ARG MINSTREL_VERSION=dev
|
||||
ARG MINSTREL_CHANNEL=local
|
||||
RUN go build -trimpath \
|
||||
@@ -36,8 +35,8 @@ FROM debian:bookworm-slim
|
||||
# ffmpeg: duration probes and the exact-tier audio hash (a SHA-256 of the
|
||||
# encoded audio packets, so no decode). libchromaprint-tools: fpcalc, the
|
||||
# acoustic fingerprint that tells the same recording at two bitrates apart
|
||||
# from two different recordings (M400). Both are baked in at build time so a
|
||||
# deployed instance never fetches either (rule 164); fpcalc is shelled out
|
||||
# from two different recordings. Both are baked in at build time so a
|
||||
# deployed instance never fetches either; fpcalc is shelled out
|
||||
# rather than bound because CGO_ENABLED=0 above rules out cgo.
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates ffmpeg libchromaprint-tools \
|
||||
@@ -57,10 +56,12 @@ COPY config.example.yaml /etc/smartmusic/config.yaml
|
||||
RUN mkdir -p /app/data /app/client && chown -R minstrel:minstrel /app
|
||||
WORKDIR /app
|
||||
|
||||
# In-app update channel (#397). client/ in the build context holds
|
||||
# minstrel.apk + minstrel.apk.version (populated by release.yml on tag
|
||||
# pushes; .gitkeep + README otherwise). Endpoints return 404 when the
|
||||
# APK files aren't present, so non-tag images degrade gracefully.
|
||||
# In-app update channel. client/ in the build context holds
|
||||
# minstrel.apk + minstrel.apk.version, which release.yml fills on every
|
||||
# build (dev and tag pushes bundle their own APK, main bundles the latest
|
||||
# release's); a local build has only .gitkeep + README. Endpoints return
|
||||
# 404 when the APK files aren't present, so such an image degrades
|
||||
# gracefully.
|
||||
COPY --chown=minstrel:minstrel client/ /app/client/
|
||||
|
||||
USER minstrel
|
||||
|
||||
Reference in New Issue
Block a user