Skip to content

Set up docker for release + deploy, build front end during pypi#54

Merged
scottstanie merged 8 commits intoopera-adt:mainfrom
scottstanie:main
May 1, 2026
Merged

Set up docker for release + deploy, build front end during pypi#54
scottstanie merged 8 commits intoopera-adt:mainfrom
scottstanie:main

Conversation

@scottstanie
Copy link
Copy Markdown
Collaborator

This removes the build/ folder from the repo and builds it as part of the PyPI release procedure.
Also adds the option for a grid/zebra frame

scottstanie and others added 8 commits April 25, 2026 14:30
cd.yml now runs `npm ci && npm run build` before `python -m build`, so
the wheel always contains a freshly-built `src/bowser/dist/` bundle —
the dist tree is therefore moved out of git and into .gitignore.

Adds `[tool.setuptools.packages.find]` to constrain discovery to
`bowser*`. Without this, setuptools auto-picks up the sibling React
source directories under `src/` (`components/`, `hooks/`, `context/`)
and ships `.tsx` files in published wheels.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New right-toolbar button cycles off → plain → zebra. Plain draws thin
gray graticule lines with edge labels; zebra draws a solid white
border with alternating black tick segments at each lat/lon crossing
(QGIS map-composer style), useful for screenshot/academic exports.

Implementation is a custom SVG overlay appended to the map container
— no new npm dependency. Tick interval is auto-picked (1/2/5 × 10ⁿ
degrees) targeting ~6 divisions per axis, with adaptive label
precision.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Leaflet caches its container size and only redraws on its own resize
events (window resize, etc.). CSS-driven layout shifts — sidebar
collapse, time-series panel open — leave the map drawing for the old
width: tiles stop short of the new right edge, and the graticule SVG
(sized from map.getSize()) doesn't extend either.

Add a ResizeObserver on the map container that calls
map.invalidateSize() on any dimension change. One fix for both bugs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add `dockerize` job to ci.yml: builds on every push/PR (no push for PRs),
  tags `:<version>` always, `:develop` on main, `:latest` on `v*` tags.
  Uses Buildx + GHA cache so the pixi conda solve survives across runs.
- Pass setuptools_scm version into the build via `--build-arg VERSION=`
  so the image reports the real version; image tag uses a sanitized form
  (Docker tags forbid `+`, but PEP 440 forbids `-`, so we keep both).
- Add `.dockerignore` to keep build context lean (skips node_modules,
  .pixi, data/, screenshots, .git, etc).
- Add OCI labels (title, description, source, licenses, ...) to Dockerfile.
- Update deploy/README.md: pull-from-GHCR is now the primary path, and
  document the local-build prerequisites (frontend bundle, --platform
  linux/amd64 on Apple Silicon).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@scottstanie scottstanie merged commit b350475 into opera-adt:main May 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant