Repository navigation
Add Docker/Singularity image, GHCR workflow and docs - #65
Conversation
- Dockerfile (micromamba + environment.yml, pinned nereus, TeX Live), entrypoint, offline cartopy/regionmask data, smoke test - GitHub Actions: build + smoke test on PRs, push :latest/:sha-* to GHCR - pyproject: add missing runtime deps (gsw, kerchunk, fastparquet, ...), grib extra, explicit package-data for builds without .git - provenance.git_info falls back to FEATHER_GIT_* env vars in the image Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@koldunovn , After this is merged, main publishes ghcr.io/clidyn/feather:latest. If that publish step fails with a permission error, an organisation admin |
|
The test stack on Anaconda terms of service. I woul dnot use Anacanda at all, and replace it with conda forge |
Reviewer request: the Anaconda 'defaults' channel falls under the Anaconda Terms of Service. environment.yml now lists conda-forge + nodefaults, the image installs with --override-channels -c conda-forge, and the smoke test fails if any conda package comes from another channel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Packages are still downloaded from conda.anaconda.org/conda-forge. That is the community conda-forge channel, which Anaconda only hosts; Expect about an hour for this build, since changing environment.yml invalidates the cached environment. For @koldunovn :
|
|
Still can't finish the docker build |
The 2.0.5 solver took ~53 min on environment.yml (the runner was shut down mid-solve on the conda-forge-only build). A dry run with 2.9.0 solves the same file in 13 s, all 328 packages from conda-forge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
the environment is conda-forge only now, and the smoke test checks every package's channel on each build. the PR can be merged and will try to test it on levante. |
Dockerfile (micromamba + environment.yml, pinned nereus, TeX Live), entrypoint, offline cartopy/regionmask data, smoke test
GitHub Actions: build + smoke test on PRs, push :latest/:sha-* to GHCR
pyproject: add missing runtime deps (gsw, kerchunk, fastparquet, ...), grib extra, explicit package-data for builds without .git
provenance.git_info falls back to FEATHER_GIT_* env vars in the image
Container image (Docker + Singularity)
One image for every pipeline step (diagnostics, analyze, report, website) plus the tests.
Dockerfile: micromamba +environment.yml(nereus from the pinned commit), TeX Live forreport, offline cartopy Natural Earth +regionmask AR6 data
docker/: entrypoint (flags go tofeather, anything else runs as a command; writable matplotlib cache under Singularity), offline-datafetch,
smoke_test.sh, README (Docker, Levante Singularity, SLURM, API keys).github/workflows/docker.yml: build + smoke test on PRs; onmainpushghcr.io/clidyn/feather:latestand:sha-<short>;v*tags →:<version>pyproject.toml: adds runtime dependencies that were only inenvironment.yml(gsw, kerchunk, fastparquet, pandas, cftime, fsspec), agribextra, and explicit package data so templates ship in builds without.gitprovenance.git_info(): falls back to theFEATHER_GIT_*build args when there is no.git, so run records still name the commit (3 newtests)
Tested on Levante: provenance tests (36 passed), wheel built without
.gitincludes templates, offline-data fetch and offline lookup. Theimage itself is first built by this PR's workflow.
🤖 Generated with Claude Code