Skip to content

Add Dagster+ serverless code location + deploy paths#70

Merged
jirhiker merged 3 commits into
feature/orchestration-gcp-uvfrom
feature/dagster-plus-serverless
Jun 24, 2026
Merged

Add Dagster+ serverless code location + deploy paths#70
jirhiker merged 3 commits into
feature/orchestration-gcp-uvfrom
feature/dagster-plus-serverless

Conversation

@jirhiker

Copy link
Copy Markdown
Member

Makes the repo show up in Dagster+ as a serverless code location.

What

  • dagster_cloud.yaml — code location die-orchestration, module_name: orchestration.definitions, build dir orchestration (its pyproject.toml declares the dagster deps + the nmuwd path-source the PEX builder recurses into for backend/).
  • GitHub Actionsdagster-cloud-deploy.yml (prod deploy on push to main) + dagster-cloud-branch-deployments.yml (per-PR branch deployments). PEX fast deploy.
  • orchestration/deploy_serverless.sh — manual deploy via dagster-cloud serverless deploy-python-executable, same build definition as CI.

Why PEX, not Docker

  • Repo imports only shapely (bundled-GEOS wheel) — no fiona/pyogrio/geopandas, so no system GDAL. Docker build would be pure overhead.
  • CLI deploy-docker's bundled Dockerfile runs pip install . on a bare pyproject.toml (no README/source copied yet) → fails on this repo's hatchling layout.
  • PEX deps resolution does a BFS reading every requirements.txt; an editable -e . line breaks it — so no root requirements.txt.

CI and manual share one build definition. No drift.

Required before deploys run

GitHub repo secrets: DAGSTER_CLOUD_API_TOKEN, ORGANIZATION_ID, DAGSTER_CLOUD_URL. Manual script needs DAGSTER_CLOUD_ORGANIZATION + DAGSTER_CLOUD_API_TOKEN env vars + local Docker.

Known wart

Root pyproject dev/geoserver extras get pulled into the deps PEX (builder concatenates all optional-dependency groups). Functional, just image bloat.

🤖 Generated with Claude Code

jirhiker and others added 3 commits June 24, 2026 14:43
Make the repo show up in Dagster+ as a serverless code location.

- dagster_cloud.yaml: location die-orchestration, module
  orchestration.definitions, build dir orchestration (its pyproject
  carries the dagster deps + nmuwd path-source).
- GitHub Actions: prod deploy on push to main + per-PR branch
  deployments, PEX fast deploy (no system GDAL needed; only shapely,
  which ships a bundled-GEOS wheel).
- orchestration/deploy_serverless.sh: manual deploy via
  dagster-cloud serverless deploy-python-executable, same build
  definition as CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Verified via cross-reference (grep + framework-entry-point check) before
removal; kept Flask/FastAPI route handlers, click commands, and inherited
base-class slots that vulture flags as "unused".

Removed:
- Dead functions/classes: bounding_polygons get_* helpers (6),
  geo_utils utm/lonlat converters (+ orphaned PROJECTIONS), converter
  UnitConverter Protocol, logger Loggable, strategies OutputStrategy,
  source BaseContainerSource/BaseFileSource, transformer convert_units
  (deprecated), unifier get_sources_in_polygon/generate_site_bounds/
  *_unification_test/get_datastream(s) + stale commented call block.
- orchestration/assets/wells.py (build_wells_asset, imported nowhere).
- 63 unused imports across backend/frontend/orchestration (autoflake).

flake8 (E9,F63,F7,F82) + mypy clean; 427 tests collect with no import
errors; local persister tests pass. ckan connector appears entirely
unwired (config uses st2 instead) — flagged separately, not removed here.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jirhiker jirhiker merged commit 307119e into feature/orchestration-gcp-uv Jun 24, 2026
2 of 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