Building and Working Locally

Introduction

Fuze allows you to build and debug locally without having to commit to repositories or use a cloud CI/CD system.

What is Working Locally?

When you work locally, you are telling Fuze that none of your build information is to be pushed to the universal Fuze world. There are several use cases for which working local can be beneficial:

  • You are prototyping

  • You are at a place in a development/debug cycle where you are not ready to make your builds publicly available

  • You are working in multiple modules/dependencies that have separate builds and you are not ready to, or won’t ever push changes to dependent modules.

  • Build speed and efficiency considerations

Working locally in Fuze utilizes special local DB’s and operations in order to provide all of the functionality for Fuze builds, but keeps everything inside your host environment.

How do I Work Locally?

The build option --local is the notification to Fuze that you are working locally. If that option is included on your command line, then all builds will be “local” builds.

When the --local option is included, Fuze generates a special local FuzeID, indicated by the “L” character between the Date and Minutes field in the FuzeID.

Warning

Local FuzeID’s Cannot Be Released

Local FuzeID’s cannot be deployed or pushed out for release.

If you are working locally, and wish to make a release deployment, you must build without the --local option in order to generate a build with a universal FuzeID that can be released.

Working Locally With Dependencies

To work locally with a build target that requires dependencies (i.e., dependencies specified in your build map), the following logic is used for obtaining those dependencies.

If a FuzeID is specified for the dependency:

  1. Fuze will look in its local cache for that FuzeID and use it if its found.

  2. If not found, and internet connectivity exists, Fuze will look in the remote cache for that package and download it locally if found.

  3. If no internet connectivity, or that FuzeID is not found remotely, Fuze will use the latest from the local cache, if one exists.

  4. If no internet connectivity and the local cache does not contain a package of the same name, the build will fail. (Note that you may correct this failure by first building the missing package locally)

If a FuzeID is not specified for the dependency:

  1. Fuze will look in its local cache for that package and use the latest available.

  2. If not found, and internet connectivity is available, Fuze will look in the remote cache for that package and use the latest available.

  3. If no internet connectivity and the package is not found in local cache, the build will fail. (Note that you may correct this failure by first building the missing package locally)