This is the documentation for the latest (main) development branch of the Infuse-IoT platform. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

Application Release Framework

Infuse-IoT includes a west workflow for automatically building application releases in a way that can be reproduced at any point in the future. Think Infrastructure-as-Code for application releases.

A given application release is a combination of the following information:

  • Application manifest (Board target, version, supported RPCs, etc)

  • Application artifacts (.bin, .hex, etc)

  • Built configuration (autoconf.h, CMakeCache.txt, logs, etc)

  • Flashing instructions (runners.yaml)

Building Releases

Releases are built by providing a dedicated release configuration file to the west release-build command, for example:

west release-build -r infuse-sdk/samples/releases/serial-nrf52840dk.yaml

Release Configuration

The .yaml file that configures the release has the following fields:

Field

Type

Description

application_folder

Relative path string

Application folder. It can point to a file outside of the current git repository.

output_prefix

String

Prefix of the final folder generated by the release script. The final output directory is {working_directory}/{output_prefix}_{application_version}.

board

String

Complete board target the application is being built for.

signing_key

Relative path string

MCUboot signing key used for the bootloader application and signing the final application.

snippets (Optional)

String

List of any additional snippets to apply to the application image

network_key (Optional)

Relative path string

Default network key configuration file

network_key_secondary (Optional)

Relative path string

Secondary network key configuration file

disable_logging (Optional)

Boolean

Relative path to the default network key configuration file

version_override (Optional)

String

Override the application VERSION file. This is mostly useful for application_folder’s that point outside the manifest repository.

Note

All relative paths are relative to the release configuration file, not the current working directory.

Warning

All keys should NOT be committed to any source code repository. Instead there should be a defined folder in the workspace root (e.g. {workspaceFolder}/keys) that contains keys that can be referenced by the relative path.

Release Checks

The release build process currently performs the following checks:

  1. Validates the release configuration file against the expected schema

  2. Validates that repositories contain no uncommitted changes or commits not present on the remote

  • Repository errors can be downgraded to warnings with the --git-ignore CLI option.

  • Repository checks can be skipped altogether with the --git-skip CLI option.

  1. Validates that the build command completes without errors

  2. Performs a sanity check on the final application configuration:

  • Default signing keys

  • Debug port not disabled

  • CONFIG_MCUMGR without OTA upgrade support

  • etc

Release Manifest

Once the release build has completed, a manifest file is generated inside the release folder. It contains the following information:

Field

Type

Description

application.primary

String

Name of the primary application

application.board

String

Board target from configuration file

application.soc

String

System-on-Chip of the board

application.hex

String

Merged bootloader + application .hex file

application.id

Integer

Unique application ID (CONFIG_INFUSE_APPLICATION_ID)

application.version

String

Application version signed with imgtool

application.network_id

Integer

Default network ID of the application

application.sysbuild

Boolean

Application was built with sysbuild

application.TF-M

Boolean

Application was built with Trusted-Firmware M

configuration.file

String

Absolute path of release configuration file

configuration.repo.commit

String

Commit hash of configuration file repo at build time

configuration.repo.remotes

List[String]

List of git remotes of the repository

features

List[String]

List of the enabled features of the application

commands

List[String]

List of the Remote Procedure Calls (RPC) compiled into the application

kv_keys

List[String]

List of the Key-Value Store keys enabled in the application

Flashing Releases

Once built, a release can be flashed through the west release-flash command, for example:

west release-flash -r release-sample-serial-nrf52-1.3.7+be0cc394

Note

Hardware must have been provisioned (see Device Provisioning) before flashing a release.