...
- User command CLI
$ bs run build
which does the build flow.- Pass to backend the component, branch, and user headers
- backend looks into component DB for the development image
- backend mounts
/mnt
at /sdf/scratch/ad/ad-build/
for downloading src code - backend mounts
/build
at /sdf/groups/eed/ad/ad-build/
for the build scripts - backend mounts configMap at
/config/build_config.json
for build request information - starts the build container and calls
start_build.py
start_build.py
then performs a build and outputs its results at the top of repo directory
start_build.py
will then call start_test.py
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
- 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
{"serverDuration": 52, "requestCorrelationId": "e42f6cd63cca1e2d"}