Environment & config reporting: publish-time manifest + central data store
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 0
- Forks
- 1
- Avg merge
- 32m
- Merged PRs (30d)
- 3
Description
Per @jstac: environment data is pull (status pages/dashboard), the weekly report shows only diffs. This issue is the producer: an env record per lecture repo, fed to QuantEcon/status-lectures (JSON store + Pages dashboard).
Today
publish-gh-pages/action.yml:126-136writes{name, tag, commit, timestamp, size_mb, file_count, repository}as a release asset beside the tarball and SHA256 checksum (publish-gh-pages/action.yml:144-152); noschema_version, environment, digest or cache/runner/duration fields, and nothing hererepository_dispatches.- Opt-in and tag-only: gated on
create-release-assets == 'true'(:82, default'false'at:16);:90exits early whenGITHUB_REF_TYPE != tag. - Computed then discarded:
setup-environment/action.yml:35-41outputscontainer-modeandconda-cache-hit;:207runspip list 2>/dev/null || conda listinto a log group. - No digest source: markers
containers/quantecon-build/Dockerfile:100-103andcontainers/quantecon/Dockerfile:99-101carryimage=,build_date=,variant=(build image only), no tag/digest, andsetup-environment/action.yml:175parses onlyimage=. Resolve it in the workflow or bake it into the marker at build time;.github/workflows/test-container.yml:99alreadydocker manifest inspects:latestfrom a host runner, for image size only. The digest makes #129's first gap measurable: both images publish and consume mutable:latest.
Tasks
- Cadence first: per-tag = release provenance; per-gh-pages-deploy (small JSON, no tarball) = what status-lectures needs for drift detection and the dashboard-as-migration-tracker. Schema follows.
- Schema: versioned per-repo env record with
schema_version(report-data.json conventions): stub fields plus container image + digest,container-mode,conda-cache-hit, runner, build duration. - Publish-push (primary):
publish-gh-pages(and/orsetup-environment) emits the effective-environment manifest and dispatches it to status-lectures. Effective = resolvedconda list/pip freeze, container digest/tag, cache hit/miss, build duration, runner. - Daily backstop (secondary): scheduled scrape of
_config.yml+environment.ymlfor unmigrated repos, plus declared-vs-effective drift detection (store/scheduling in status-lectures; collection logic shareable from here). - Coverage: reporting via publish-push == migrated to the centralized actions, so the dashboard doubles as a migration tracker.
Fields: python · anaconda/conda pin · jupyter-book · theme · sphinx extensions (+versions) · execute mode + timeout · only_build_toc_files · launch buttons · intersphinx targets · container vs conda + tag/digest · runner (ubuntu vs AWS GPU) · GPU? · cache strategy · build duration.
Part of QuantEcon/meta#321.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with publish-gh-pages/action.yml, setup-environment/action.yml, and the referenced Dockerfiles and test-container.yml workflow; compare their existing outputs, markers, and manifest inspection. Read the report-data.json schema conventions before defining the versioned record. Done means the agreed effective-environment data is produced on the stated cadence, includes the listed fields, and is dispatched or otherwise available to status-lectures for coverage and drift reporting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- anaconda, github-actions, python, shell
- Domain
- build-system, ci-cd, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100