********************* Environment variables ********************* Applications built on craft-application have several environment variables that can configure their behaviour. They and the behaviour they modify are listed below. Variables passed to managed builders ------------------------------------ Several environment variables from the host environment are passed to the managed build environment. While an application may adjust these by adjusting the ``environment`` dictionary attached to the ``ProviderService``, craft-application will by default forward the ``http_proxy``, ``https_proxy`` and ``no_proxy`` environment variables from the host. Supported variables ------------------- These variables are explicitly supported for user configuration. .. _env-var-craft-build-environment: ``CRAFT_BUILD_ENVIRONMENT`` =========================== If the value is ``host``, allows an environment to tell a craft application to run directly on the host rather than in managed mode. This method is roughly equivalent to using ``--destructive-mode``, but is designed for configurations where the application is already being run in an appropriate container or VM, such as `Snapcraft rocks `_ or when controlled by a CI system such as `Launchpad `_. **CAUTION**: Setting the build environment is only recommended if you are aware of the exact packages needed to reproduce the build containers created by the app. ``CRAFT_BUILD_FOR`` =================== Sets the default architecture to build for. Overridden by ``--build-for`` in lifecycle commands. ``CRAFT_PLATFORM`` ================== Sets the default platform to build. Overridden by ``--platform`` in lifecycle commands. ``CRAFT_SNAP_CHANNEL`` ====================== Overrides the default channel that a craft application's snap is installed from if the manager instance is not running as a snap. If unset, the application will be installed from the ``latest/stable`` channel. If the application is running from a snap, this variable is ignored and the same snap used on the host system is injected into the managed builder. ``CRAFT_VERBOSITY_LEVEL`` ========================= Set the verbosity level for the application. Valid values are: ``quiet``, ``brief``, ``verbose``, ``debug`` and ``trace``. This is overridden by the ``--quiet``, ``--verbose`` or ``--verbosity={value}`` global command options. Development variables --------------------- The following variables exist to help developers writing applications using craft-application more easily debug their code: ``CRAFT_DEBUG`` =============== Controls whether the application is in debug mode. If this variable is set to ``1``, general exceptions will not be caught, instead showing a traceback on the command line. This is normally only useful for developers working on craft-application or an app that uses the framework, as a traceback is always written to the log file as well. ``CRAFT_LAUNCHPAD_INSTANCE`` ============================ For remote builds, allows the user to set an alternative launchpad instance. Accepts any string that can be used as the ``service_root`` value in `Launchpadlib `_. Unsupported variables --------------------- The following variables cause behaviour changes in craft-application, but should not be set except by craft-application itself. ``CRAFT_LXD_REMOTE`` ==================== If using LXD, the application will start containers in the configured remote rather than ``local``. **CAUTION:** Using non-default remotes is experimental and not recommended at this time. ``CRAFT_MANAGED_MODE`` ====================== Alerts the application that it is running in managed mode. This should only be set by craft-application when creating a provider. Systems designed to wrap craft applications may use the :ref:`env-var-craft-build-environment` environment variable to make the app run on the host.