Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. User command CLI $ bs run build  which does the build flow.
    1. Pass to backend the component, branch, and user headers
    2. backend looks into component DB for the development image
    3. backend mounts /mnt  at /sdf/scratch/ad/ad-build/ for downloading src code
    4. backend mounts /build  at /sdf/groups/eed/ad/ad-build/ for the build scripts
    5. backend mounts configMap at /config/build_config.json for build request information
    6. starts the build container and calls start_build.py 
    7. start_build.py then performs a build and outputs its results at the top of repo directory
  2. start_build.py  will then call start_test.py
  3. start_test.py will then look into directories in the src code called /test/unit_tests/ and run those


Group meeting 6-6-24

  • shared filesystem can be bad because if someone makes changes without you knowing
  • if we have one ioc that have 3 different versions
  • Are component dependencies for building against src code or used for integration testing?
  • how we deal with dependencies?
    • 1) Use docker image with all the dependencies baked into it
    • 2) or create container that have repo download/install all dependencies with cmake maybe
    • 3) Have a configuration file for user to use saying which dependencies he has, and the ad-build will create the docker image for you.
  • Have base containers like ubuntu, rhel, rocky with basic compilation
    • then need 
  • what is the right way to automate the building the development image
  • s3df apptainer is read-only, can't install dependencies so we need an image with full dependencies already baked
  • can use package manager to install prebuilt component to resolve time concern with installing depenencies on image
  • llvm
  • lets update schema to have the 'image' of the component, 
  • have run image (which is component dependencies) built from the build image (Which is base os with basic compilation)
  • we should create the docker file for components dynamically
    • lets say we have ioc that depends on boost and epics, if we start with vanilla dev container like rocky9, what information do we need to have
    • once the image is built dynamically, then transfer that to a registry, and developers can use that on s3df apptainer since it has full dependencies.
    • Who will build the image dynamically? - To build on kubernetres isn't possible, may need to find alternative like buildah, or just use github?
  • Example of component
  • my_Ioc component - can be any environment (os)
    • boost component
    • epics component
  • The artifacts that we need to produce after the build is finished
    • image with everything is installed, one for each environment
    • has bin,lib,etc, everything with all dependencies installed with dependencies you chose
    • with goal of having iocs run in containers
  • build system should have prebuilt components