Reviewed-on: #41
HasanAra deployment
This repository deploys HasanAra, a searchable archive of HasanAbi broadcasts. It contains no application code. The application is transcript-create, pinned here as the core submodule, and runs from that project's released, digest-pinned images.
| Path | Purpose |
|---|---|
core/ |
transcript-create at the deployed release's source_commit |
docker-compose.client.yml |
HasanAra overlay: origins, OAuth callback requirements, Almaz port bindings, management and dev networks, HasanAbi VOD channels, and brand mounts |
branding/brand.json, branding/assets/ |
Public brand profile and Piker Broadcasting Service artwork (logo.svg, favicon.svg, badge.svg, social-card.svg) |
release-images.json |
The deployed release manifest. It is added when a core release is adopted |
bin/compose-prod |
Runs the core's guarded production helper for this directory |
scripts/validate.py |
Validates the profile and overlay against the pinned core without secrets |
Where changes go
- Application behavior, shared production services, release tooling and the preflight contract belong in transcript-create. Merge them there, cut a release, then adopt it here.
- HasanAra identity, domains, channel sources, host bindings and artwork belong here.
- Secrets stay in the ignored
.env.prodand diarization env file on the host. Both repositories are public.
Do not copy core files into this repository or apply core fixes here.
Checkout
git clone --recurse-submodules <this repository>
git submodule update --init # for an existing clone
Validate
python3 -m venv .validate-venv
.validate-venv/bin/pip install -c core/constraints.txt pydantic
.validate-venv/bin/python scripts/validate.py
The validator renders the full production Compose model with inert values and applies the core preflight's service, diarization and network checks. CI runs it on every pull request.
Adopt a core release
- Merge the change in transcript-create and publish a release candidate there. Keep its verified
release-images.json. - Here, check out that release's
source_commitincore, commit the new submodule pointer together with the newrelease-images.json, and open a pull request. - After merge, on the host:
git pull --recurse-submodules, thenbin/compose-prod preflightandbin/compose-prod deploy.
The preflight fails unless both trees are clean, the core checkout matches the manifest's source_commit, and every rendered image matches the manifest. See the core client branding guide for the layout contract, and the Almaz cutover runbook for moving the running installation to this layout.