# EESSI hackathon Jan'22 - workflow to propose additions to EESSI software stack Live collaborative notes for this task during the 2nd EESSI hackathon; see also general notes at https://hackmd.io/vSOfDj-SQSmYglhxz_R4hg Notes from Dec'21 hackathon: https://github.com/EESSI/meetings/wiki/EESSI-hackathon-Dec'21 Zoom for this task: https://uib.zoom.us/j/69105180487?pwd=YldPU2ZPYWRGV1duV2JaV082MEVJdz09 ## Subtasks * [03.1] Use EESSI build container for the actual software builds * [03.2] Monitor build/test jobs, handle failures * [03.3] Let the app pick up the logs and tarball(s) * [03.4] Reply results/failures back to PR (success/failure comment, logs as gist, ...) * [03.5] Support more architectures * [03.6] Add dependency structure between subtasks, e.g. tests should be triggered when build has succeeded * [03.7] Handle many more events * [03.8] Prepare slides for [Easybuild User Meeting talk](https://easybuild.io/eum22/#eessi-workflow) * [03.9] Set up CI for the Github App ## Quick 'n dirty job script ``` #!/bin/bash #SBATCH --job-name=build_easystack #SBATCH --time=01:00:00 #SBATCH --constraint=shape=c4.2xlarge ARCH=x86_64/intel/haswell export EESSI_PILOT_VERSION=2021.12 EESSI_TMPDIR=/tmp/eessi JOBID=18fa2650-5cd1-11ec-89c7-a0e0f4a35775 mkdir -p ${EESSI_TMPDIR} cp -r ~/software-layer ${EESSI_TMPDIR} cp ~/EESSI-pilot-install-software-easystack.sh ${EESSI_TMPDIR}/software-layer cp ~/jobs/${JOBID}/softwarelist.yaml ${EESSI_TMPDIR}/easystack.yml cd ${EESSI_TMPDIR}/software-layer ./build_container.sh run ${EESSI_TMPDIR} ./run_in_compat_layer_env.sh ./EESSI-pilot-install-software-easystack.sh if [ $? -eq 0 ]; then TARBALL=${EESSI_TMPDIR}/eessi-${EESSI_PILOT_VERSION}-software-linux-${ARCH////-}-$(date +'%s').tar.gz ./build_container.sh run ${EESSI_TMPDIR} ./create_tarball.sh ${EESSI_TMPDIR} ${EESSI_PILOT_VERSION} ${ARCH} ${TARBALL} cp ${TARBALL} ~/jobs/${JOBID} fi ``` ## Questions - How does the build job get the build scripts from `software-layer`? - Preinstalled on app account? - Include in build container? - Download on the fly? - default behaviour: the ones from `main`, or from tag corresponding to EESSI version? - some option to override that for testing