Build options
By default, Snapcraft uses Multipass to simplify the build process and to confine the build environment within a virtual machine. For most developers, this happens transparently and is the best way to build snaps.
But to cater for different operating systems, environments and requirements, Snapcraft also offers a number of flexible options for how it can be run. These are outlined below.
Currently supported
Command | Description | Requirements |
---|---|---|
snapcraft default |
Uses Multipass to builds the snap within an instantiated VM to ensure a clean, isolated, build environment. Nested VMs require accelerated/nested VM functionality. | Any supported Linux system with VM capabilities. Windows/macOS support coming soon. |
snapcraft remote-build |
Remote build runs a multi-architecture build process on remote servers using Launchpad. | Prospective snaps need to be open source as the code will be publicly available, plus a Launchpad account. |
Build from GitHub | Build from GitHub is another remote build option, triggering automatic snap builds from your developer account. | Requires snap source hosted on a public GitHub repository, and account linking between GitHub and your developer account. |
With Multipass, the default virtual machine is assigned 2 CPUs. If you have the hardware capabilities, use the following environment variables to modify CPU and memory allocation to improve performance:
$ export SNAPCRAFT_BUILD_ENVIRONMENT_CPU=8
$ export SNAPCRAFT_BUILD_ENVIRONMENT_MEMORY=16G
Command | Description | Requirements |
---|---|---|
snapcraft --destructive-mode |
Destructive mode. Designed to be used in temporary/short-lived environments, such as on a CI system, because the build could contaminate the host build environment. | Needs access to Ubuntu 18.04 (core18) or 16.04 (core16 / core), alongside snapcraft, from the Snap Store. |
snapcraft --use-lxd |
LXD container. Builds the snap using LXD, rather than Multipass. This can potentially reduce resource usage, especially from a VM. Set SNAPCRAFT_BUILD_ENVIRONMENT=lxd to use LXD by default. |
Requires LXD |
snapcraft --http-proxy <http-proxy> |
Configures HTTP proxy. Snapcraft will honour http_proxy environment flag as well. |
None |
snapcraft --https-proxy <https-proxy> |
Configures HTTPS proxy. Snapcraft will honour https_proxy environment flag as well. |
None |
snapcraft --add-ca-certificates <path> |
Adds trusted CAs in Snapcraft-created build environments. May be a CA certificate file or directory containing certificate files. | LXD, Multipass |
electron-builder -l snap |
Electron builder integration. Enables Electron app developers to easily create snaps with a simple modification to package.json . |
Requires Election-builder with Linux or macOS snapcraft from the Snap Store or brew. |
In development
Command | Description | Requirements |
---|---|---|
snapcraft --enable-manifest |
Add the build manifest to the snap package in snap/manifest.yaml . This contains the specific sources and packages used to build the snap and allows the Snap Store to automatically check your Snap for security issues. This is identical to setting the environment variable SNAPCRAFT_BUILD_INFO=1 . Snaps built on Launchpad will have this set automatically. |
None |
snapcraft --offline |
Allow snapcraft to build snaps on a system without a network connection provided that 1) the build environment is prepared, and 2) all sources and packages required by the parts are already on the local system (that usually means that snapcraft pull was successfully executed when networking was still available). |
None |
Deprecated
Command | Description | Requirements |
---|---|---|
snapcraft cleanbuild |
Cleanbuild. Legacy non-bases method for building snaps in a LXD container. | Deprecated with the release of Snapcraft 3.x and no longer supported. |
apt install snapcraft |
Snapcraft deb package. Originally used to install snapcraft on Ubuntu-based Linux distributions (and Debian). | Outdated and no longer supported. See Snapcraft overview for current installation instructions. |
A supported Linux system is a host or VM running a snap-capable Linux distribution. See Installing snapd for details.
Last updated 9 months ago.