# Jenkins setup for ICON-exclaim master
###### tags: `functional cycle 10`
Appetite: 1/2 cycle
Developer: Abishek
## Goals
Implement a Jenkins CI pipeline for ICON-EXCLAIM/master, similar to the C2SM/ICON or the ICON-EXCLAIM/icon-dsl setups.
## Known tasks and progress
Working in personal fork of ICON-EXCLAIM/master for now
1. Submodules
- [x] Update submodules to reference internal C2SM repositories, avoiding DKRZ references, similar to C2SM/icon
2. Jenkins configuration
- [x] Added a jenkins directory, containing the Jenkins files and supporting scripts ~~(in the scripts subdirectory)~~.
- [x] `jenkins/Jenkinsfile_daily` and `jenkins/Jenkinsfile_PR` have been adapted from icon-dsl
- [x] Scripts in jenkins/scripts are largely similar to C2SM/icon scripts/jenkins_scripts but I removed the jenkins.sh wrapper, and Sam's new common.sh is used to setup some environment variables instead.
3. Icon config and build
- [x] ~~Adding new config scripts to the config/cscs/c2sm directory. This may or may not be required going forward.~~
- [x] Now using config scripts from config/cscs directory to remain consistent with icon-nwp.
- [x] Using spack to set library paths required by configure scripts
- [ ] Modify remaining config scripts, that currently hard-code dependecy paths, to use spack
- [ ] Test build process with cray/cce on Daint.
4. Probtest
- [x] `setup_probtest` pipeline stage queries for the current hash of probest (using BB scripts) and then installs a fresh venv + prerequisites, similar to the icon-dsl scripts.
- [x] Generate new probtest references for daint_cpu_pgi and daint_gpu_nvidia. Currently stored in the icon-test-references subdirectory, but may need to move this to a separate repository.
- [x] Obtain icon-test-references from DKRZ gitlab instead of generating internally. Occurs during `setup_probtest` stage.
- [ ] Probtest comparison fails for some currently excluded tests. Investigate if related to code being out of sync.
- [ ] Cleanup tolerance.sh or remove?
5. Testing framework
- [x] Testing framework remains close to C2SM/icon and DWD/icon-nwp. ~~Copied the checksuite.icon-c2sm directory into run, from C2SM/icon. And modified some tests to include tolerance testing (in the MD env variable).~~
- [x] Using checksuite.icon-dev and removing checksuite.icon-c2sm
- [x] Testlists are stored in jenkins/scripts/test.daint.*
- [ ] Integrate Jonas' PR11 - Use spack/test.py to mimick BuildBot testsuite.
6. Jenkins PR plan
- [x] Implemented a Jenkins plan for PR
- [x] Avoid conflicts with icon-dsl PR plan by specifying target branches to white list (master) and exclude (icon-dsl).
7. Cleanup and finalize
- [ ] Merge personal fork with ICON-EXCLAIM/master
## Issues
1. `icon-exclaim/master` is out of sync with `icon-nwp/master`. Not every test will pass until this sync. Christoph is presently working on syncing `icon-exclaim/icon-dsl` with `icon-nwp/master`. Should we wait till Oct/Nov when `icon-exclaim/icon-dsl` is merged with `icon-exclaim/master`, or try to indepdently sync with `icon-nwp/master` now?