Structure Config YAML
=====================

Overview
--------

Structure repositories require a configuration file which informs Gen AI
Builder of your Managed Structure’s dependencies and how it needs to
build and run.

Structure Config File Schema
----------------------------

All relative paths are based off of the directory in which the
``structure_config.yaml`` file is located.

The schema for the configuration file is as follows:

.. code:: yaml

   version: 1.0
   runtime: python3
   runtime_version: 3.11
   build:
     pre_build_install_script: scripts/my-pre-build-install-script.sh
     post_build_install_script: scripts/my-post-build-install-script.sh
     requirements_file: requirements.txt
     cache_build_dependencies:
       enabled: false
       watched_files:
         - requirements.txt
         - scripts/my-pre-build-install-script.sh
         - scripts/my-post-build-install-script.sh
   run:
     main_file: structure.py

Configuration Fields
^^^^^^^^^^^^^^^^^^^^

version
^^^^^^^

The Structure Config schema version number.

runtime
^^^^^^^

The runtime environment to use for the Structure.

runtime_version
^^^^^^^^^^^^^^^

The specific version of the runtime environment for the Structure.

build (OPTIONAL)
^^^^^^^^^^^^^^^^

The build-time configuration for the Structure.

- **pre_build_install_script** - The path to your
  pre_build_install_script, for running during the Structure build prior
  to dependency installation. This path is relative to the structure
  configuration file. Or absolute from the repository root if a forward
  slash is used: ``/my-pre-build-install-script.sh`` .

- **post_build_install_script** - The path to your
  post_build_install_script, for running during the Structure build
  after dependency installation. This path is relative to the structure
  configuration file. Or absolute from the repository root if a forward
  slash is used: ``/my-post-build-install-script.sh`` .

- **requirements_file** - The path to your Structure’s requirements.txt
  file.

- **cache_build_dependencies** - Defines the configuration for caching
  build dependencies in order to speed up Deployments

- **enabled** - Defines whether the build dependency caching is on or
  off

- **watched_files** - Defines the particular files that will trigger
  cache invalidation, resulting in a full rebuild of the Structure and
  dependencies

run (REQUIRED)
^^^^^^^^^^^^^^

The run-time configuration for the Structure.

- **main_file** - Specifies the path to the entry point file of the
  Managed Structure. This path is relative to the structure_config.yaml.
  Or absolute from the repository root if a forward slash is used:
  ``/structure.py`` .
