...
Brian presents a StrawMan Release Workflow
- commit/tag
- Release = commit + tag
- Travis or Jenkins driven
- sets ENV vars
- INIT WS
- Use reporman to init workspace
- workspace only works currently for ST and GR due to need for packagelist. Could use packageLib.py to determine dependencies and requirements to allow per package builds.
- If including extlibs into containers, every part of this setup would be part of the containers.
- Use reporman to init workspace
- Code Generation and DOxygen
- Code Generation (SWIG) but that is done in SCons
- Really just doxgygen for now
- Compile
- In Jenkins or Travis this would do a loop over available systems to build and variants
- CentOS6, Mac, CentOS7 - this info comes from? which is currently in RM DB.. Brian would like to put that in the repository, due to a desire to avoid putting those credentials into Travis. Could have additional matrix for the compilers to use.
- SCons builds the unit tests too
- In Jenkins or Travis this would do a loop over available systems to build and variants
- TEST
- Package
- package env that the build used, including dependencies and externals, which can ultimately be pulled into a container
- SCOns currently create the tarball and the setup scripts
- Validate
- We don't currently have any system tests for ST, we do have some for GR which are not currently run as part of RM, it would be nice to reactivate for this for releases.
- Deploy
- Moving tar balls from workspace into NFS to CVMFS
- Containers (Singularity) will link to CVMFS and includes xrootd installed
- Could deploy to conda too
Giacomo reminds that the conda build system includes most of the above. Are we going to consider moving everything to the conda system or in parallel.
Brian - make Mac builds harder
Richard: who are the recipients of the builds? processing, developers, collab users
conda - is agnostic wo what you use for the build (make,
Giacomo mentions that conda builds requires some things like the to use rpath, need to compile, Joanne volunteers to try to use rpath for a build
Brian: conda could be another variant in the COMPILE box.
Brian: Release process creates the tags, by the user or via something like Jenkins.. provide package name and the tagged version that you want.
unit test - results
build logs - Jenkins stores the output
Matt: relationship to the RM?
Brian: replacement of Rm ultimately, but re-use RM for the beginning phases.
Joanne: RM is tag driven
Alex: Travis is commit driven
$130 for the unlimited time frame for an indeterminate period of time
Modularization will also help.
WS is semi-persistent - if doing a repoman checkout, if only one sub package changes, then that's the only one checked out and SCons is smart enough to only build what is necessary.