Normal incidence #194
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-License-Identifier: LGPL-3.0-or-later | |
# Copyright (C) 2023 Christopher Dilks | |
name: ci | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# BUILD --------------------------------------------------------------------------- | |
build_1: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
repo: [EDM4eic, irt, epic] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh ${{matrix.repo}} | |
echo "[CI] BUILD REPOSITORY" | |
build.sh ${{matrix.repo}} | |
- name: tar_artifacts # workaround: tarball artifacts to preserve executable permissions | |
run: tar cvf artifacts.${{matrix.repo}}.tar prefix | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build_1 | |
retention-days: 1 | |
path: artifacts.${{matrix.repo}}.tar | |
build_2: | |
needs: | |
- build_1 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
repo: [EICrecon, reconstruction_benchmarks] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_1 | |
- name: untar_artifacts | |
run: | | |
ls artifacts.*.tar | xargs -I_ tar xvf _ | |
rm -v artifacts.*.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh ${{matrix.repo}} | |
echo "[CI] BUILD REPOSITORY" | |
build.sh ${{matrix.repo}} | |
- name: tar_artifacts # workaround: tarball artifacts to preserve executable permissions | |
run: tar cvf artifacts.${{matrix.repo}}.tar prefix | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build_2 | |
retention-days: 1 | |
path: artifacts.${{matrix.repo}}.tar | |
build_3: | |
needs: | |
- build_2 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_1 | |
- name: untar_artifacts | |
run: | | |
ls artifacts.*.tar | xargs -I_ tar xvf _ | |
rm -v artifacts.*.tar | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_2 | |
- name: untar_artifacts | |
run: | | |
ls artifacts.*.tar | xargs -I_ tar xvf _ | |
rm -v artifacts.*.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh EICrecon | |
echo "[CI] BUILD LOCAL CODE" | |
make | |
- name: tar_artifacts # workaround: tarball artifacts to preserve executable permissions | |
run: tar cvf build.tar prefix bin lib | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build_3 | |
retention-days: 1 | |
path: build.tar | |
# PIPELINE: SIMULATION, RECONSTRUCTION, BENCHMARKS --------------------------------- | |
pipeline: | |
needs: | |
- build_3 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
id: | |
- fixed_p | |
- eta_scan | |
- p_scan_eta0 | |
- p_scan_eta1 | |
- p_scan_eta2 | |
- p_scan_eta3 | |
radiator: [aerogel, gas] | |
particle: [pi+, kaon+, proton] | |
include: | |
### default momentum for each radiator (for fixed momentum tests) | |
- { radiator: aerogel, momentum: 5.0 } | |
- { radiator: gas, momentum: 20.0 } | |
### fixed momentum tests | |
- { id: fixed_p, options: -t 1 -n 50 } | |
- { id: eta_scan, options: -t 6 -k 5 -n 30 } | |
### momentum scans at fixed pseudorapidities | |
- { id: p_scan_eta0, radiator: aerogel, options: -t 9 -k 5 -n 30 -b 1.6 } | |
- { id: p_scan_eta0, radiator: gas, options: -t 10 -k 5 -n 30 -b 1.6 } | |
- { id: p_scan_eta1, radiator: aerogel, options: -t 9 -k 5 -n 30 -b 2.0 } | |
- { id: p_scan_eta1, radiator: gas, options: -t 10 -k 5 -n 30 -b 2.0 } | |
- { id: p_scan_eta2, radiator: aerogel, options: -t 9 -k 5 -n 30 -b 2.7 } | |
- { id: p_scan_eta2, radiator: gas, options: -t 10 -k 5 -n 30 -b 2.7 } | |
- { id: p_scan_eta3, radiator: aerogel, options: -t 9 -k 5 -n 30 -b 3.5 } | |
- { id: p_scan_eta3, radiator: gas, options: -t 10 -k 5 -n 30 -b 3.5 } | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_3 | |
- name: untar_artifacts | |
run: | | |
tar xvf build.tar | |
rm -v build.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh reconstruction_benchmarks | |
echo "[CI] RUN SIMULATION:" | |
simulate.py ${{matrix.options}} -m ${{matrix.momentum}} -p ${{matrix.particle}} | |
# echo "[CI] EVENT DISPLAY SINGLES:" | |
# event_display d s out/sim.edm4hep.root n 0 0 | |
# mv out/ev out/ev.singles | |
echo "[CI] EVENT DISPLAY INTEGRATED:" | |
event_display d s out/sim.edm4hep.root n | |
mv out/ev out/ev.all_events | |
echo "[CI] DRAW HITS:" | |
draw_hits d | |
echo "[CI] RECONSTRUCTION:" | |
recon.rb | |
echo "[CI] BENCHMARKS:" | |
benchmark.rb -b | |
- name: cull | |
run: | | |
rm -v out*/sim*.root | |
rm -v out*/rec*.root | |
- name: tree_artifacts | |
run: tree out | |
- name: rename_artifacts | |
run: | | |
mkdir -p pipeline/${{matrix.id}}/${{matrix.radiator}}/${{matrix.particle}} | |
mv -v out/* pipeline/${{matrix.id}}/${{matrix.radiator}}/${{matrix.particle}}/ | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: pipeline | |
retention-days: 1 | |
path: pipeline*/ | |
# GEOMETRY ------------------------------------------------------------------------ | |
geometry: | |
needs: | |
- build_3 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- { det: d, detector: DRICH } | |
- { det: p, detector: PFRICH } | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_3 | |
- name: untar_artifacts | |
run: | | |
tar xvf build.tar | |
rm -v build.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh none | |
echo "[CI] CREATE TGEO FILE:" | |
geometry.sh -${{matrix.det}} -o geo/${{matrix.detector}}_TGeo.root | |
echo "[CI] DUMP GEOMETRY CONSTANTS:" | |
search_compact_params.sh -e | grep ${{matrix.detector}} | tee geo/${{matrix.detector}}_constants.txt | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: geometry | |
retention-days: 1 | |
path: geo*/ | |
# EVENT VISUALIZATION ------------------------------------------------------------- | |
### FIXME: not sure how to make these work on CI runners | |
### - locally: | |
### run `xvfb-run eic-shell` (to suppress graphics) | |
### call `exit | simulate.py -t1 -n1 -v -e svg` | |
### | |
# visual: | |
# needs: | |
# - build_3 | |
# runs-on: ubuntu-latest | |
# strategy: | |
# fail-fast: true | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: build_3 | |
# - name: untar_artifacts | |
# run: | | |
# tar xvf build.tar | |
# rm -v build.tar | |
# - uses: cvmfs-contrib/github-action-cvmfs@v3 | |
# - uses: eic/run-cvmfs-osg-eic-shell@main | |
# with: | |
# platform-release: "jug_xl:nightly" | |
# setup: environ.sh | |
# run: | | |
# scripts/configure_CI.sh none | |
# echo "[CI] SET DEBUG MODE" | |
# scripts/set_optics_debug_mode.sh DRICH_debug_sector 1 | |
# echo "[CI] REBUILD epic" | |
# build.sh epic | |
# echo "[CI] VISUALIZE:" | |
# exit | simulate.py -t1 -n1 -v -e pdf | |
# mv out out.visual | |
# - uses: actions/upload-artifact@v3 | |
# with: | |
# name: visual | |
# retention-days: 1 | |
# path: out.*/ | |
# optics: | |
# needs: | |
# - build_3 | |
# runs-on: ubuntu-latest | |
# strategy: | |
# fail-fast: true | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: build_3 | |
# - name: untar_artifacts | |
# run: | | |
# tar xvf build.tar | |
# rm -v build.tar | |
# - uses: cvmfs-contrib/github-action-cvmfs@v3 | |
# - uses: eic/run-cvmfs-osg-eic-shell@main | |
# with: | |
# platform-release: "jug_xl:nightly" | |
# setup: environ.sh | |
# run: | | |
# scripts/configure_CI.sh none | |
# echo "[CI] SET DEBUG MODE" | |
# scripts/set_optics_debug_mode.sh DRICH_debug_optics 1 | |
# echo "[CI] REBUILD epic" | |
# build.sh epic | |
# echo "[CI] VISUALIZE:" | |
# exit | simulate.py -t12 -e pdf | |
# mv out out.optics | |
# - uses: actions/upload-artifact@v3 | |
# with: | |
# name: optics | |
# retention-days: 1 | |
# path: out.*/ | |
# MISCELLANEOUS TESTS ------------------------------------------------------------- | |
test_pixel_gaps: | |
needs: | |
- build_3 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_3 | |
- name: untar_artifacts | |
run: | | |
tar xvf build.tar | |
rm -v build.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh none | |
echo "[CI] RUN SIMULATION:" | |
simulate.py -s -t4 -n500 | |
echo "[CI] RUN RECONSTRUCTION:" | |
recon.rb -c config/recon_digi_only.yaml | |
echo "[CI] DRAW PIXEL HITS:" | |
test_pixel_gap_cuts n | |
- name: tree_artifacts | |
run: tree out | |
- name: rename_artifacts | |
run: mv -v out tests | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: tests | |
retention-days: 1 | |
path: tests*/ | |
test_track_propagation: | |
needs: | |
- build_3 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build_3 | |
- name: untar_artifacts | |
run: | | |
tar xvf build.tar | |
rm -v build.tar | |
- uses: cvmfs-contrib/github-action-cvmfs@v3 | |
- uses: eic/run-cvmfs-osg-eic-shell@main | |
with: | |
platform-release: "jug_xl:nightly" | |
setup: environ.sh | |
run: | | |
scripts/configure_CI.sh none | |
echo "[CI] RUN SIMULATION:" | |
simulate.py -t4 -k10 -n1 | |
echo "[CI] RUN RECONSTRUCTION:" | |
recon.rb | |
echo "[CI] DRAW PIXEL HITS:" | |
root -b -q scripts/test_tracks.C | |
- name: tree_artifacts | |
run: tree out | |
- name: rename_artifacts | |
run: mv -v out tests | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: tests | |
retention-days: 1 | |
path: tests*/ | |
# ARTIFACT COLLECTION ------------------------------------------------------------- | |
collect: | |
if: ${{ always() }} | |
needs: | |
- pipeline | |
- geometry | |
# - visual | |
# - optics | |
- test_pixel_gaps | |
- test_track_propagation | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: pipeline | |
- uses: actions/download-artifact@v3 | |
with: | |
name: geometry | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: visual | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: optics | |
- uses: actions/download-artifact@v3 | |
with: | |
name: tests | |
- name: cull | |
run: | | |
find -name .keep | xargs rm -v | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: _RESULTS | |
retention-days: 14 | |
path: | | |
pipeline*/ | |
geo*/ | |
tests*/ |