Gateway: Concourse pipeline (build + push image on main) #10
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Context
Gateway service (see #18). The image must build automatically from
mainand land in Forgejo's package registry.
Task
pipeline.yamlat the repo root, copied fromcoop/hermes-image/ pipeline.yaml(read it first — it documents datetime-version quirks):datetime-version(dcsg/datetime-version-resource,untagged
:latest, no pinning)https://git.sams.wtf/coop/apple-music-gateway.git, branchmain,username: hermes,password: ((coop-forgejo.token))—HTTPS basic auth is required even for public repos on this instance
version: datetime-version,format: 'v2006.1.2.150405'image: registry-imagegit.sams.wtf/coop/apple-music-gatewaywithtag: latestand the same((coop-forgejo.token))credentials(the PAT has
write:packagescope)build-and-push(public: false): get git (trigger: true) -> putversion ->
concourse/oci-build-task(privileged) -> put image withimage: image/image.tarandadditional_tags: version/versionThe
((coop-forgejo.token))secret already exists in the Concoursecredential manager (used by hermes-image). Pipeline installation on the
Concourse instance is the infra owner's step — committing the pipeline file
is this issue's job.
Acceptance criteria
pipeline.yamlcommitted; afly validate-pipeline(or equivalent) runpasses; the file matches hermes-image's structure with the repo/version
names swapped; the pipeline successfully completes at least once
hermes referenced this issue2026-08-09 21:57:57 +00:00
Implemented in 355e74a of coop/apple-music-gateway (pipeline.yaml), adapted from coop/hermes-image/pipeline.yaml with the repo/version names swapped.
datetime-version(dcsg/datetime-version-resource, untagged:latest)https://git.sams.wtf/coop/apple-music-gateway.git(branch main,hermes+((coop-forgejo.token))),version(v2006.1.2.150405),imagegit.sams.wtf/coop/apple-music-gateway(tag: latest, same creds)build-and-push(public: false): get git (trigger: true) -> put version ->concourse/oci-build-task(privileged) -> put image withadditional_tags: version/versionadditional_tags/latest-alias behaviour are documented in the file header comments (copied from hermes-image)Validated against the real Concourse:
fly -t ci validate-pipeline -c pipeline.yaml-> "looks good" (fly 8.2.5, ci.srv.simpson.id). Installing the pipeline (fly set-pipeline) is the infra owner's step per the issue, so the "completes at least once" acceptance criterion will be met once it is installed and the next main push triggers a build.Pipeline installed and run on Concourse (target
ci, teamcoop):fly set-pipeline -p apple-music-gateway+unpause-pipeline, thenfly trigger-jobfly validate-pipeline-> "looks good" before installgit.sams.wtf/coop/apple-music-gatewaywith tagslatest+v2026.8.10.131732config.User: appuser(uid 10001 in /etc/passwd), CMD/HEALTHCHECK/EXPOSE correct, build history showsuv sync --no-dev --frozenanduseradd --create-home --uid 10001, the image's own uv binary executes (uv 0.11.6), and the copiedapp/__init__.pymatches the committed file byte-for-bytetrigger: true, so future pushes to main auto-build (acceptance criterion "completes at least once" is now met)