---
# System prepended metadata

title: EESSI hackathon Jan'22 - workflow to propose additions to EESSI software stack

---

# 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