1. Home
  2. Docs
  3. Yonohub
  4. YonoEBuilder

YonoEBuilder

YonoEBuilder allows you to build custom environments (each with a set of packages and dependencies) with just a few clicks. You can use these environments with other Yonohub apps: develop YonoArc blocks, run jobs using YonoJobs, launch custom apps, etc. You can also share your environments with your teams, publish them on YonoStore, or purchase existing ones.   You can navigate to YonoEBuilder by clicking its icon on the main view of Yonohub.

Creating Environments

To create an environment:

  1. Click Create environment at the top-right corner of YonoEBuilder’s main page.
  2. Complete the required info in the General, Requirements, Launch Settings, and Special Resources tabs as explained in the next subsections.
  3. If you wish, use the Autocomplete using environment option at the top-right corner of the popup to complete all the required info using an existing environment. Then, you will be able to make any changes before you build.
  4. Click Build or Express Build.

Environment General Information

Under the General tab, enter the general info of the environment as follows:
  1. Name is used to uniquely identify the environment.
  2. Version of the environment in the major.minor.patch format, e.g., 0.0.1.
  3. Description explains the details of the environment.
  4. Log File Path is the path of the file in which the logs of the build process will be written. The path should start with slash and end with .log.
  5. Environment Folder Path is optionally used when you need to build complex environments whose dependencies are beyond the packages in APT, pip, or Conda. You can include any dependencies and scripts in this folder and execute these scripts using the Linux commands you list under the Requirements tab.
    • Linux commands are executed from within this folder, i.e., this folder is the context of the build process.
    • Although this folder is available for you during the build process of the environment, it is not automatically available during runtime while using this environment as a custom app, YonoArc block, etc. If there is data you need during runtime, you can copy them to your preferred path in the file system of the environment during the build process.
    • For reproducibility, a copy of this folder is made to be associated with your environment so that you are free to edit your folder later.
    • For convenience, you can check Copy from existing environment to copy the entire folder path of an existing environment instead of setting up a new folder if no changes are needed.
  6. Resource Model is used to build the environment. The resource model you select here does not limit your options for future uses of the environment. For example, you can build an environment using C1, but later use the same environment to start Jupyter Notebook using C2. You can find more about resource models here and more about deployment regions here.

Environment Requirements

Under the Requirements tab, list the requirements of the environment as follows:
  1. Base on which you would like to build your environment, so the environment will include everything in the base in addition to the requirements you add. YonoEBuilder supports 4 types of bases as follows:
    1. Yonohub Base allows you to select one of our predefined bases which include all the required dependencies to easily use your environment later in Yonohub, e.g., in custom apps and YonoArc. Select the appropriate Base Name and Version depending on:
      • Whether you need GPU support or not. If you select a GPU base, NVIDIA Drivers and CUDA are already installed for you.
      • The Python version you need. We strongly recommend using Python 3 because Python 2 is no longer supported. Yonohub still supports Python 2 for backward compatibility. Environments with Python 3 bases get ready much faster than others when used in any Yonohub app.
      • Whether you need Conda for any of your packages. Please beware that using Conda makes the environment size larger, which slows down loading the environment when used in any Yonohub app.
      • The target architecture on which this environment will be used. Select an x86_64 base if you plan to use this environment in the cloud, and arm32 or arm64 if you plan to use this environment on a hardware with a different architecture, e.g., a Raspberry Pi or any embedded board. YonoEBuilder can still build non-x86 environments in the cloud using emulation.
      • Whether you need GPU accelerated rendering in your VNC-based environments. This allows you to smoothly view your GUI-based tools from within your browser while running this environment later as a custom app or a YonoArc block. If you select a base with GPU accelerated rendering, you need to click noVNC with Accelerated Rendering to add the required URL to the Launch Settings.
      • Whether you need ROS 2 instead of ROS. All our bases come with ROS built-in unless otherwise specified.
      • It is always recommended to select the latest version of any base so that your environment get ready much faster when used in any Yonohub app.
    2. Existing Environment allows you to select an existing Environment and its Version. You will not see the requirements of the existing environment inserted in the requirements table, but rest assured that your new environment has everything in the existing environment you select here.
    3. Docker Image allows you to select a docker image from a public or private docker registry. Set Image URL to the docker image name (e.g., ubuntu:18:04) to get an image from Docker Hub, or prepend the path of a different registry (e.g., myregistry.local:5000/testing/test-image).
      • Select the Target Architecture of the docker image.
      • Check From private registry and enter the Username and Password if the registry is private.
    4. Tar File allows you to provide a docker image by selecting the Tar File that was generated from the docker image using the command: docker save. Select the Target Architecture of the docker image.
  2. Check Include Gazebo simulator in order to include it in the environment. This option is no longer needed and is left for backward compatibility. You can now build any complex environments with any of your preferred simulators.
  3. For convenience, there are many common requirements that you can add with just a single click. For example, if you click TensorFlow, a new row is added in the requirements table: pip tensorflow. Other requirements, such as SSH, add multiple rows and modify the Launch Settings of the environment (explained later). Hover over a requirement to see how many things will be added (e.g., SSH adds 2 packages, 1 URL, and 2 configurations). Some notable mentions are:
    • Visual Studio Code or Cloud9 to add an IDE to your environment and make it accessible in custom apps and YonoArc.
    • SSH to be able to SSH into this environment while it is running as a custom app or a YonoArc block.
    • Your environment may contain GUI-based (not web-based) tools, and you may need to view them from within your browser while running this environment later as a custom app or a YonoArc block. To be able to do so, click noVNC to add the required dependencies (or noVNC with Accelerated Rendering for a base with GPU accelerated rendering).
    • Custom App Support to be able to use this environment as a custom app. Do not click this if your environment is based on one of our built-in Yonohub bases (either directly or indirectly) as they already support that.
    • Octave for YonoArc if this environment will be used to develop a YonoArc block using our Octave APIs.
  4. Add the requirements of the environment to the table. Requirements are installed in the same order as they appear in the table. Adding a new requirement requires:
    • Manger is the package manager used to install the package, such as apt, pip, or conda. You can also select the option command if you need to execute a Linux command from within the Environment Folder Path (specified under the General tab), i.e., this folder is the context of the build process. This allows executing any custom scripts which makes building complex environments possible.
    • Package is the package name as listed in the corresponding manager. Autocompletion is available, but you can force adding your package if it doesn’t appear by clicking the little Add below the Package field.
    • Version is the desired version of the package. Autocompletion is available, but you can force adding your version if it doesn’t appear by clicking the little Add below the Version field. Beware that if you leave the version blank, YonoEBuilder will get the latest version whenever you rebuild a new version of the environment. This may break your code because, for example, a newer version of TensorFlow may change the name of a method that your programs use.
    • Private Repository is the URL of the private repository (if any).
    • Then, click Add to add the requirement to the table.
    • You can also click Edit or Delete beside each requirement to edit or delete it. Click Save while editing a requirement to apply your change. Click Clear while adding or editing a requirement to abort the operation.

Environment Launch Settings

Under the Launch Settings tab, If you need to enable this environment to be launched as a custom app on the main view of Yonohub:
  1. Check Enable launch settings. Fill out the rest of the details as follows:
  2. Startup Command is the command executed once the environment is booted.
    • If the startup command finishes execution, Yonohub terminates your custom app. Hence, you need the startup command to be blocking as long as you need the custom app running. That’s why the default value of the startup command is “sleep infinity” to make sure your custom app stays running until you manually terminate it from the main view of Yonohub.
    • For example, to be able to SSH into your custom app, the startup command needs to start the SSH server. This is automatically done for you if you click SSH in the Requirements tab. It is the same for GUI-based access using noVNC or web-based access such as Visual Studio Code.
    • Since an environment may contain multiple tools (e.g., SSH and Visual Studio Code), the startup command may execute several independent commands. In these cases, we use the following pattern to make sure that all commands are executed independently in the background while the entire startup command stays running due to “sleep infinity”. You can edit the startup command for any customizations. The startup command may also execute a script saved in the file system of the environment.
      (COMMAND1) & (COMMAND2) & (COMMAND3) & sleep infinity
  3. URLs are provided to the user after launching this environment as a custom app in order to access it. You can have several URLs, each with a:
    • Name so that it is easy for the user to know which URL to click.
    • Protocol (if needed) such as HTTP. URLs whose protocol is HTTP or HTTPS are clickable for the user convenience.
    • Port on which the internal service is listening. For example, SSH listens on port 22 by default. For each port you specify, to avoid conflicts, Yonohub generates a corresponding port and provides the final URL to the user.
    • Path to be appended at the end of the URL, if needed.
    • Description providing more info about this URL for the user.
    • Then, click Add to add the URL to the table.
    • You can also click Edit or Delete beside each URL to edit or delete it. Click Clear while adding or editing a URL to abort the operation.
  4. Configurations can be customized by the user of the custom app and given to the app before it launches. For example, the environment owner may allow the user to set the SSH username and password before launching the custom app. Each configuration has a:
    • Name so that it is easy for the user to know which configuration this is.
    • Key which is the name of the environment variable of this configuration. Configurations are set as environment variables, so they can be used by the startup command. For example, notice in the image above how the PASSWORD key is used by the startup command as $PASSWORD.
    • Type of the configuration, such as Text, Number, Boolean, Browse from YonoDrive, or Select from a predefined list of options.
    • Default Value of the configuration if the user doesn’t change it.
    • Description providing more info about this configuration for the user.
    • Then, click Add to add the configuration to the table.
    • You can also click Edit or Delete beside each configuration to edit or delete it. Click Clear while adding or editing a configuration to abort the operation.

Environment Special Resources

Information about special resources are available in the here.

Tracking the Progress of Environments.

An environment can be in one of the following states as shown in the Status column in the main page of YonoEBuilder:
  • Waiting while YonoEBuilder is allocating resources for the build process.
  • Building while the environment is currently being built. You can follow up with the build process using the log file.
  • Released if the environment has been built successfully and is ready to be used.
  • Failed if the build process has failed. You can check the error using the log file.
  • Purchased if this environment is purchased from YonoStore, so it is read-only.

Actions on Environments

The main page of YonoEBuilder lists all the environments you have access to. For each environment, you can see its Name, latest Version, Status, Size of the latest version, and Owner. Note that the size of the environments you build (including all their versions) affects your balance. However, the environments you purchase from YonoStore do not.

You can select an environment by clicking its row. Then, you can select a version of this environment using the drop-down list in the Version column. Then, you can use the buttons at the top to perform many actions:

  1. View the details of the environment.
  2. Create a New version of the environment
    • All the details of the new version are copied from the latest version, and they are ready to be modified as you wish for the new version.
    • The new version (major.minor.patch) must be set higher than the latest version.
    • By default, the new version has the same Log File Path, so beware that the old log file will be overwritten if it still exists.
    • By default, the new version copies the environment folder (if any) of the latest version, but you can change this if you wish under Environment Folder Path.
    • If the Requirements and the Environment Folder Path of this new version hasn’t changed, YonoEBuilder will ask if you would like to release this new version with the updated info (e.g., modified launch settings) without rebuilding the environment from scratch (to save time and money) or not. You should rebuild from scratch if the contents of the environment folder have changed since YonoEBuilder doesn’t check for the contents of the folder.
    • New versions don’t affect old versions. In fact, environments are always read-only for reproducibility reasons. However, they can be removed manually to save storage, if needed.
  3. Cancel the build process of an environment that is Waiting or Building.
  4. Share the environment with your teams. Then, select the team(s) with which you would like to share the environment and click Apply. Sharing an environment gives full access rights to all its versions for all team members.
  5. Publish on YonoStore to publish the selected version on YonoStore. More info about YonoStore is available here.
  6. Unpublish from YonoStore to unpublish the selected version from YonoStore. More info about YonoStore is available here.
  7. Get environment files of the selected version. This downloads a single compressed file having the contents of the Environment Folder Path at the time this version was built.
  8. Remove the selected version of the environment. Beware that this may break any custom apps or YonoArc blocks that are using this version.
  9. Remove all versions of the selected environment. Beware that this may break any custom apps or YonoArc blocks that are using this environment.
  10. Show logs of the build process. This shows the contents of the file at the Log File Path specified under the General tab.

An action button is disabled when the action is not valid at the moment, e.g., cancelling a released environment or getting environment files of a version that didn’t have associated files.

 

YonoEBuilder Essentials Bundle

In order to help you get started, YonoEBuilder includes an Essentials bundle that is already purchased from YonoStore by default when you sign up. The bundle includes:

  • YonoCommons – CPU includes common packages and machine learning frameworks, such as NumPy, OpenCV, Matplotlib, TensorFlow, Keras.
  • YonoCommons – GPU includes NVIDIA drivers, CUDA, and the GPU versions of the same common packages