Skip to content

Repository files navigation

SDKcraft

QA Status

SDKcraft is a tool that packages and publishes SDKs to be used with Workshop, a related user-facing product. SDKcraft solves the essential problem of creating reproducible, distributable development environments by allowing developers to define, build, and package complete SDKs as singular installable units.

SDKcraft is useful for developers who need to distribute complex development toolchains, maintainers who want to ensure consistent development environments across teams, and organizations looking to streamline toolchain distribution and management.

Using SDKcraft

Here are the core SDKcraft commands that demonstrate the essence of the tool.

Initialize a new SDK project:

sdkcraft init

Build and package your SDK:

sdkcraft pack

Pack the SDK and stage it in the Workshop try area for manual try-out:

sdkcraft try

Run the SDK's spread suite (scaffolded by sdkcraft init) against the freshly packed artifact in a clean LXD container:

sdkcraft test

Clean build artifacts:

sdkcraft clean

Publishing flows through the SDK Store. Authenticate once, reserve the SDK name, then upload a revision and release it to a channel:

sdkcraft login
sdkcraft register <NAME>
sdkcraft upload <NAME>_<ARCH>_<BASE>.sdk --release latest/edge

Promote an existing revision between channels with sdkcraft release:

sdkcraft revisions <NAME>
sdkcraft release <NAME> <REVISION> latest/stable

Installation

SDKcraft is supported on Ubuntu and other snap-enabled Linux distributions.

Install the snap using the --classic option:

sudo snap install --classic sdkcraft

Prerequisites

SDKcraft requires LXD 6.6 or later for low-level operation.

If the snap install command reports an issue with LXD, install a recent LXD version with snap:

sudo snap install --channel=6/stable lxd  # to install
sudo snap refresh --channel=6/stable lxd  # to update

Documentation

Refer to Part 4 of the tutorial in our docs for a detailed introduction to SDKcraft; for more detailed guidance, see the Build an SDK and Publish an SDK how-to guides.

For reference examples of SDK implementation, see the reference SDKs repository.

To know more about Workshop in general, jump straight to the documentation home page.

Generate the project schema JSON:

uv run python sdkcraft/models/project.py

This uses the exact version of craft-application locked in uv.lock, ensuring schema consistency.

Community and Support

Use the following resources for communication, support, and feedback:

Contributions

To join the development effort, see How to contribute.

About

A tool to create SDKs for Workshop.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages