Skip to main content

Conda plugin entry point for the conda-ship runtime builder.

Project description

conda-ship

CI Docs zizmor License Python: 3.10+

Build ready-to-run conda runtimes from solved conda environments.

conda-ship is a generic builder for single-binary conda runtimes. It provides the cs builder CLI, the cs-template generic runtime template, a composite GitHub Action, and an optional Python adapter that exposes conda ship inside conda.

The project is currently alpha and pre-1.0. The split from conda-express is now explicit: conda-ship owns the reusable build/runtime machinery, while downstream distributions own their package sets, runtime names, release channels, installer wrappers, and user documentation. conda-express is one downstream distribution maintained by Jannis Leidel; it uses conda-ship to publish the cx and cxz runtimes.

Quickstart

This shortest path uses conda-workspaces to create a solved source environment, then builds an online runtime named demo:

conda create -n cs-demo -c conda-forge python pip conda-workspaces
conda activate cs-demo
python -m pip install conda-ship

mkdir demo-runtime
cd demo-runtime
conda workspace init --format conda --name demo-runtime
conda workspace add --feature ship --no-lockfile-update \
  "python>=3.12" \
  "conda>=25.1" \
  conda-rattler-solver \
  "conda-spawn>=0.1.0"
cat >> conda.toml <<'TOML'

[tool.conda-ship]
runtime = "demo"
delegate = "conda"
layout = "online"
source-environment = "ship"
exclude = ["conda-libmamba-solver"]
TOML

conda workspace lock
cs inspect
cs build --dry-run
cs build
./dist/demo --version

Quickstart: inspect, preview, build, and run a stamped runtime

For a guided walkthrough with Pixi, bootstrap, status, uninstall, and embedded runtime examples, see the first runtime tutorial.

What It Builds

conda-ship stages a runtime binary plus release metadata:

  • .runtime.lock: the lockfile stamped into the runtime
  • .packages.txt: tab-separated package records for quick inspection
  • .info.json: artifact metadata for release tooling
  • .sha256: checksums for staged files
  • optional .bundle.tar.zst: compressed package archives for offline builds

The runtime itself has a small management surface: bootstrap, status, shell, and uninstall. Other commands pass through to the configured delegate executable after bootstrap, usually conda.

Artifact Layouts

Layout Output Bootstrap behavior
online <runtime> Downloads packages from the stamped runtime lock.
external <runtime> plus <runtime>.bundle.tar.zst Uses a separate package bundle for offline-capable installs.
embedded <runtime>z Embeds the compressed package bundle in one binary.

Project Input

conda-ship builds from an already solved source environment. It does not solve loose matchspecs in the GitHub Action and it does not define a package set of its own.

Supported manifest and lockfile pairs:

  • conda.toml plus conda.lock
  • pyproject.toml with [tool.conda] plus conda.lock
  • pixi.toml plus pixi.lock
  • pyproject.toml with [tool.pixi] plus pixi.lock

The package and channel intent lives in the selected source environment. [tool.conda-ship] only records conda-ship build policy:

[tool.conda-ship]
runtime = "demo"
delegate = "conda"
layout = "online"
source-environment = "ship"
exclude = ["conda-libmamba-solver"]

The selected source environment must include the runtime contract packages: conda, conda-rattler-solver, and conda-spawn.

Local Workflow

Packaged builds find cs-template next to the installed cs executable. Use --template only for an explicit template path, custom packaging, or cross-builds.

cs inspect
cs build --dry-run
cs build
cs build --layout embedded
cs run -- --path /tmp/demo-smoke bootstrap

cs inspect is the preflight command. It derives the runtime lock, validates the selected source environment, applies package exclusions, and prints the package set without writing artifacts.

Inspect a source environment before shipping it

Use cs build --dry-run to preview the runtime metadata and staged release asset paths before writing files.

Preview conda-ship runtime artifacts

After a real build, verify the staged artifacts and inspect the release metadata before handing them to downstream packaging or signing.

Verify staged conda-ship artifacts

The staged runtime is a stamped copy of the generic runtime template with its own command surface before pass-through to the configured delegate.

Run a generated conda-ship runtime

GitHub Actions

The repository root is also a composite GitHub Action for downstream release jobs:

- uses: jezdez/conda-ship@0.2.0
  id: cs
  with:
    layout: embedded

The action expects a committed manifest and matching lockfile. It downloads the tagged cs, cs-template, and SHA256SUMS release assets for the runner, verifies their GitHub Artifact Attestations, checks the release checksums, runs cs build --dry-run, and then stages the runtime into a dist-path output.

Use release tags for release builds. Branch refs do not have matching conda-ship release assets.

Packaging

conda-ship is not an OS installer generator. It does not target .sh, .pkg, or .msi output directly. It produces runtimes that can be distributed as GitHub Release assets or wrapped by Homebrew, constructor, Docker, enterprise packaging systems, and other release tooling.

The PyPI package installs the cs builder, the cs-template runtime template, and the Python adapter together. The adapter makes conda ship a shortcut for the same builder when installed in a conda environment; it does not make conda-ship part of conda itself. A future conda package should install the same pieces into one environment.

What Belongs Downstream

Downstream distributions decide:

  • runtime names and delegates
  • package sets and channels
  • package exclusions
  • install schemes and install names
  • documentation URLs
  • release channels and installers
  • signing, SBOM, and in-toto provenance for final artifacts

conda-ship verifies the inputs it consumes and the package archives it stages or installs, but downstream release systems should sign and attest the final runtime artifacts after cs build.

Documentation

Full documentation is available at jezdez.github.io/conda-ship.

Useful starting points:

Development

pixi install
pixi run test
pixi run lint
pixi run -e test pytest
pixi run docs

The terminal demos are generated from demos/*.tape with VHS:

pixi run demos
pixi run demos inspect

The tapes build local debug cs and cs-template binaries in hidden setup so the visible commands match the packaged workflow.

Run cargo generate-lockfile after changing Cargo metadata and pixi lock after changing pixi metadata.

License

BSD-3-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

conda_ship-0.2.0.tar.gz (97.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

conda_ship-0.2.0-py3-none-win_amd64.whl (7.1 MB view details)

Uploaded Python 3Windows x86-64

conda_ship-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

conda_ship-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (7.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

conda_ship-0.2.0-py3-none-macosx_11_0_arm64.whl (6.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

conda_ship-0.2.0-py3-none-macosx_10_12_x86_64.whl (6.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file conda_ship-0.2.0.tar.gz.

File metadata

  • Download URL: conda_ship-0.2.0.tar.gz
  • Upload date:
  • Size: 97.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for conda_ship-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2f4bd9fd7ac4461868f32d9373a3c0913417fdd42a9646299b9cfa25172924c5
MD5 269b768b20f473970a4dc09893235af9
BLAKE2b-256 f0e2485bb7b082708df711cbcac6b72ef30efba61f740d5d1c9d4f652d9cce6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0.tar.gz:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_ship-0.2.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: conda_ship-0.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for conda_ship-0.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9e635007ef9dc79815b4e540fff6c69c27dc3d470ff1ab4a404fe6d6b7b293bf
MD5 5d5ee5c23da778f90d5eb1a48431ac8b
BLAKE2b-256 4169d137e381be37b6572f007ebf64f85b3653e45bbc16b17c6a83d3f745f96f

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0-py3-none-win_amd64.whl:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_ship-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be324a67413cca61936940f9bcd33f4cd59b04b5b9cf6d79f8c88e3a6271c9b8
MD5 ae226cfe7b564d182c780177cfa796a5
BLAKE2b-256 27c8c01c3954c576e6c67c69d56e5bad713c444fcc8d24f744bf6c2c3831de11

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_ship-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 753cab36008e5a999419764bacbd2e5afeb53bf51400f4a58efb7d550a703bb6
MD5 0939a3b9ba8548cdcc877af81dda76d0
BLAKE2b-256 369f3a30c9994965c7b382efb7f47a9cfa0afc563ecce3e5bd30c52087daaa28

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_ship-0.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1cff78f94e603e3bd0372aa046bd5c756965c292b74083745836f5d757965a5e
MD5 085bc0d6610911b058a4c7362b5e3b8e
BLAKE2b-256 642c1c7b69c7ca4ec3860cf4133342c573ce01037f703facfecbcb968bd16e86

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_ship-0.2.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fbfe64f22c727b92a9a0aa29f27d31f450cd45d712966c40d807885a43f48fb6
MD5 5080ec8fa2939b50b91cbd2e76474fb2
BLAKE2b-256 3a0a0d1e9e8d7a9eed9f86b4e2f88712da9a735af9e949977fc1afc76519f778

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on jezdez/conda-ship

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page