Skip to main content

Shipit CLI is the best way to build, serve and deploy your projects anywhere.

Project description

Shipit

Shipit is a CLI that automatically detects the type of project you are trying to run, builds it and runs it using Starlark definition files (called Shipit).

It can run builds locally, inside Docker, or through Wasmer, and bundles a one-command experience for common frameworks.

Quick Start

To use shipit, you'll need to have uv installed.

Install nothing globally; use uvx shipit-cli to run Shipit from anywhere.

uvx shipit-cli .

Running in auto mode will generate the Shipit file when needed, build the project, and can also serve it. Shipit picks the safest builder automatically and falls back to Docker or Wasmer when requested:

  • uvx shipit-cli . --wasmer builds locally and serves inside Wasmer.
  • uvx shipit-cli . --docker builds it with Docker (you can customize the docker client as well, eg: --docker-client depot).
  • uvx shipit-cli . --start launches the app after building.

You can combine them as needed:

uvx shipit-cli . --start --wasmer --skip-prepare

Commands

Default auto mode

Full pipeline in one command. Combine flags such as --regenerate to rewrite the Shipit file. Use --wasmer to run with Wasmer, or --wasmer-deploy to deploy to Wasmer Edge.

generate

uvx shipit-cli generate .

Create or refresh the Shipit file. Override build and run commands with --install-command, --build-command, or --start-command. Pick a exlicit provider with --use-provider.

plan

uvx shipit-cli plan --out plan.json

Evaluate the project and emit config, derived commands, and required services without building. Helpful for CI checks or debugging configuration.

build

uvx shipit-cli build

Run the build steps defined in Shipit. Append --wasmer to execute inside Wasmer, --docker to use Docker builds.

serve

uvx shipit-cli serve

Execute the start command for the project. Combine with --wasmer for WebAssembly execution, or --wasmer-deploy to deploy to Wasmer Edge.

Supported Technologies

Shipit works with three execution environments:

  • Local builder for fast, host-native builds.
  • Docker builder when container isolation is required.
  • Wasmer runner for portable WebAssembly packaging and deployment.

Development

Clone the repository and use the uv project environment.

uv run shipit . --start

Use any other subcommand during development by prefixing with uv run shipit, for example uv run shipit build . --wasmer. This keeps changes local while matching the published CLI behaviour.

Tests

Run the test suite with:

uv run pytest

You can run the e2e tests in parallel (-n 8) with:

uv run pytest -m e2e -v "tests/test_e2e.py" -s -n 8

The e2e tests will:

  • Build the project (locally, or with docker)
  • Run the project (locally or with Wasmer)
  • Test that the project output (via http requests) is the correct one

Automatic PyPI Publish

Publishing to PyPI is automated with GitHub Actions on version tags.

Requirements:

  • Add a repository secret named PYPI_API_TOKEN with a PyPI API token.
  • Push tags using the vX.Y.Z format (for example: v0.17.5).

On each v* tag push, the workflow:

  • Runs regular test and e2e workflows.
  • Validates that the tag version without the leading v matches:
    • project.version in pyproject.toml
    • version in src/shipit/version.py
  • Builds the package and publishes to PyPI only if all checks pass.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

shipit_cli-0.18.2.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

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

shipit_cli-0.18.2-py3-none-any.whl (56.7 kB view details)

Uploaded Python 3

File details

Details for the file shipit_cli-0.18.2.tar.gz.

File metadata

  • Download URL: shipit_cli-0.18.2.tar.gz
  • Upload date:
  • Size: 47.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shipit_cli-0.18.2.tar.gz
Algorithm Hash digest
SHA256 c511a4c9ed71bc4767596cc4cc8655ede5fece30327953fcfe966a42ab0e05eb
MD5 baec3a66c453380cfc8208d6a5572fea
BLAKE2b-256 fd2b6319cdc2a36afd4ea8f71dfd114d2f30705431ba2f0b64f9f81af1927dca

See more details on using hashes here.

File details

Details for the file shipit_cli-0.18.2-py3-none-any.whl.

File metadata

  • Download URL: shipit_cli-0.18.2-py3-none-any.whl
  • Upload date:
  • Size: 56.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shipit_cli-0.18.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fbdaa5474f33d0918155a65a821806dc0104a15711c531b18abe04ef66fb0f40
MD5 2d8581e64dffe62858e9393e9b72f7b1
BLAKE2b-256 0df4d5b0827c57fe539900eaeef9e9591daa7175b7e874ff15f51f4c7c552b3f

See more details on using hashes here.

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