Building and Packaging#
Introduction#
Building and packaging are the main development operations for Fuze and lead to generation of a FuzeID. For convenience, we will use the term “build” for any and all operations that result in new FuzeID.
What is a Build?#
A build is one type of Fuze operation that generates a FuzeID.
A build is, at its core, a set of any commands defined in a Build Map and executed within the context of a CBE. However, for a build to make any sense for this tool, it should produce an output to be tagged with the FuzeID.
A build can be the compile and linking of source code to produce a binary artifact output.
A build can be a complex operation of building source with external dependencies and then packaging those artifacts with other packages, artifacts, and files to produce a singular artifact.
A build can be a packaging operation of files that pre-exist.
Common Build Environment (CBE)#
A CBE is required for build operations. It is a container that is a 100% configuration managed, traceable, and reproducible environment. CBE’s are one of the technologies that allow Fuze to execute from any platform.
More detailed information about CBE’s can be found in the CBE Reference.
The Build Map File#
A Build Map file is the main user-generated input for the Fuze build operation. It contains all of the information for Fuze to perform a build operation, including packaging.
Detailed reference information on the build map file can be found in the Build Map Reference.
Workspace Context for Build and Package#
The following shows the workspace contexts in which the two main sections of the build map execute:
![]()
All build commands, operations, and associated actions from the “build” section execute in the CBE workspace.
All package commands, operations, and associated actions from the “packages” section execute in the local host workspace.
Types of Builds#
Several types of builds can be generated from Fuze, and each have specific meanings and functionality. The FuzeID formats for each can be found on the FuzeID page.
Universal (or Regular)#
The most common, and the only type of build that has meaning outside of one’s own local system, is the universal (sometimes referred to as “regular”) Fuze build.
Example of Universal FuzeID:
123456-123-12345
Local#
Local builds and their packages are only available to you on your local machine.
See the Local Builds documentation for a detailed explanation.
Example of Local FuzeID:
123456L123-12345
Meaningless#
Meaningless builds do not have traceability, config management, or sharing characteristics of a universal build.
Example of Meaningless FuzeID:
123456X123-12345
What is a Package?#
A package is a collection of specified files that Fuze puts together into a single zip file.
Like with build, the packaging process is defined in the build map. The Build Map Reference Guide shows the details of the packaging section.
Workspace Context for Packaging#
As shown in the Workspace Context for Build and Package section, the packaging section of the build map executes in the context of the host machine.
Package Targets and Format#
See the Build Map Reference for detailed understanding of these fields.
Example:
internal-test-cs7-kepler-slc38.v7.11.230130-4db-7047.db
Dependencies#
Fuze enables full configuration management of build dependencies.
See the Build Map Reference for more information.
Where are My Packages?#
Warning
Packages used as dependencies must be in the FuzeDB
You must use
--update-packages
or--add-packages
(during current build, or to add to a pre-existent build) to make a package available as a dependency.
Making packages available for both downloading and dependency import is an important operation.
How to Build and Package#
All build functions use the --build-map
option.
Arguments and Options#
See the Build Map Reference for details.
Special Target Case: Clean Target#
Including the target keyword clean
invokes a special Fuze cleaning operation.
Build and Package Artifact Output#
Fuze Output File#
The purpose of this file is mainly for automation (CI tools, scripting, etc).
Fuze Temp Location (FTL)#
See more details: FTL Reference.
Build Artifacts#
At the conclusion of the build, all specified artifacts are copied from the CBE back to the user local workspace.
Packages#
Output package zip files are located in the FTL.
Output Example#
Example workspace layout before and after build execution.
Adding Packages to the Current Building FuzeID#
Adding Packages to Current Build#
Using --add-packages
with the current build attaches the created packages to current build FuzeID.
Adding Packages of Files to Pre-Existing FuzeID#
See Modifying Pre-Existent FuzeID Objects for more details.
How Target Definitions Affect FuzeIDs and Builds#
A single FuzeID is generated per Fuze build execution.
See the Build Map Reference Guide for details.