A releng-tool project can use an extension by registering the extension name
extensions configuration option inside the project configuration
releng). For example, to load an extension
releng-tool, the following can be defined:
extensions = [ 'my_awesome_extension', ]
During the initial stages of a releng-tool process, the process will check and load any configured extension. In the event that an extension is missing, is unsupported for the running releng-tool version or fails to load; a detailed error message will be presented to the user.
Extensions are typically Python packages installed for the running Python
environment. If extensions are not packaged/installed, users can alternatively
append the location of an extension implementation into the system path in
the releng-tool configuration file. For example, if a user has a releng-tool
project checked out alongside a checked out extension in a folder named
my-awesome-extension, the extension’s path can be registered into the
system path using the following:
import os import sys container_dir = os.path.dirname(ROOT_DIR) ext_dir = os.path.join(container_dir, 'my-awesome-extension') sys.path.append(ext_dir)
While the ability to load extensions is supported, capabilities provided by extensions are not officially supported by releng-tool. For issues related to specific extension use, it is recommended to see the documentation provided by the providers of said extensions.
For developers interesting in implementing extension, a list of available API interfaces and documentation for these interfaces can be found inside the API implementation. Implementation in the API folder aims to be “API safe” – there is a strong attempt to prevent the changing of classes, methods, etc. to prevent compatibility issues as both releng-tool and extensions (if any) evolve.
The following provides a series of examples for developers on how to develop extensions for releng-tool: