QuantEcon / QuantEcon/actions

Environment & config reporting: publish-time manifest + central data store

Open
#30 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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-136 writes {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); no schema_version, environment, digest or cache/runner/duration fields, and nothing here repository_dispatches.
  • Opt-in and tag-only: gated on create-release-assets == 'true' (:82, default 'false' at :16); :90 exits early when GITHUB_REF_TYPE != tag.
  • Computed then discarded: setup-environment/action.yml:35-41 outputs container-mode and conda-cache-hit; :207 runs pip list 2>/dev/null || conda list into a log group.
  • No digest source: markers containers/quantecon-build/Dockerfile:100-103 and containers/quantecon/Dockerfile:99-101 carry image=, build_date=, variant= (build image only), no tag/digest, and setup-environment/action.yml:175 parses only image=. Resolve it in the workflow or bake it into the marker at build time; .github/workflows/test-container.yml:99 already docker manifest inspects :latest from 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/or setup-environment) emits the effective-environment manifest and dispatches it to status-lectures. Effective = resolved conda list/pip freeze, container digest/tag, cache hit/miss, build duration, runner.
  • Daily backstop (secondary): scheduled scrape of _config.yml + environment.yml for 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.