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.1
  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.1.tar.gz (97.8 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.1-py3-none-win_amd64.whl (7.1 MB view details)

Uploaded Python 3Windows x86-64

conda_ship-0.2.1-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.1-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.1-py3-none-macosx_11_0_arm64.whl (6.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

conda_ship-0.2.1-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.1.tar.gz.

File metadata

  • Download URL: conda_ship-0.2.1.tar.gz
  • Upload date:
  • Size: 97.8 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.1.tar.gz
Algorithm Hash digest
SHA256 725d209a289cc3b7d930fca3b7bb0f80494b2a185bafe48679d616f2ecb54d59
MD5 a41a85c5df5888a06e4fce7237983513
BLAKE2b-256 d79b1c0a22165b20e2963db13cc19974aba32cdff03e1e2b06f08fb9a78aca51

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1.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.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: conda_ship-0.2.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c4f03d160dcfd6e16fb63e3ae657c624f5c69488191d59cbd205c3c914d19812
MD5 6d0a5cc3b070c915c55f5ad7a242de75
BLAKE2b-256 528e6f69e2e874436ccc0fbf72ac7dcb1d8599099719975be29aa937d0d7eb49

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1-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.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10b00426dcbdb09676b69a8a49424e8420ac7e217fe617038ff6d8a692bbae80
MD5 da34e93e28828179f91c2e8a4cf86d07
BLAKE2b-256 ebf81fa2404db06dfe9b8e5a70e64d99553b5d2565326c184395d42f5e7fde10

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1-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.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b2ea59d5d40cc8609b8f73aea9a1490bd97aea33208a0a04c46c5827523dfe70
MD5 e74515347474fc398d1fed3cffd45072
BLAKE2b-256 576793489d68dfba36732821c31980478753f9ce2944568d32d32fb419a267a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1-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.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54934e0b7120c1a5aba2533e333d07c95414b1ee08b95480a6ee038d103b9775
MD5 aded96e8a897cb7fdbfd843d69f6d1e7
BLAKE2b-256 46b134f4a39386591ab52029a72fbb92ec9033cf7daf9e00ad0fd965328577b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1-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.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for conda_ship-0.2.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc4f388811e2d4a68c74e98aea280553639c6449948925541f1945e8a35b00bd
MD5 f3c7aa727957db0ceba20595228c0b54
BLAKE2b-256 bff68f2c201f4e8d99ad6ef6454d7d73b6d1407796e61b43ddda3e0b2a548595

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_ship-0.2.1-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