Error handling on failed writes #780
Workflow file for this run
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
name: Github-CI | |
on: | |
# Dispatch this workflow whenever master or dev get a PR or commit | |
push: | |
branches : ["dev","master"] | |
pull_request: | |
branches: ["dev","master"] | |
# ... or when the workflow is started manually | |
workflow_dispatch: | |
jobs: | |
build_libraries: | |
# Build libraries for the current version of the docker image | |
# (to be used in any subsequent compilation and run jobs on said image) | |
runs-on: ubuntu-latest | |
container: ursg/vlasiator_ci:20240131_1 | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
- name: Run library build script | |
run: ./build_libraries.sh | |
- name: Build libraries tar | |
run: tar --zstd -cvf libraries.tar.zstd libraries/ | |
- name: Upload libraries as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: libraries | |
path: libraries.tar.zstd | |
retention-days: 5 | |
if-no-files-found: error | |
build_libraries_riscv: | |
# Build libraries for the current version of the docker image | |
# (to be used in any subsequent compilation and run jobs on said image) | |
runs-on: risc-v | |
steps: | |
- name: Submit library job | |
run: | | |
srun --interactive -p arriesgado-jammy -J vlasiator-libs -n 1 -c 4 --pty -t 01:00:00 bash -lc 'module load openmpi; cp ~/vlasiator/build_libraries.sh .; ./build_libraries.sh arriesgado' | |
- name: Build libraries tar | |
run: tar -czvf libraries-arriesgado.tar.gz libraries-arriesgado/ | |
- name: Upload libraries as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: libraries-arriesgado | |
path: libraries-arriesgado.tar.gz | |
retention-days: 5 | |
if-no-files-found: error | |
build_production: | |
# Build Vlasiator with production flags | |
runs-on: ubuntu-latest | |
container: ursg/vlasiator_ci:20240131_1 | |
needs: build_libraries | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Download libraries | |
uses: actions/download-artifact@v3 | |
with: | |
name: libraries | |
- name: Unpack libraries | |
run: tar --zstd -xvf libraries.tar.zstd | |
- uses: ursg/gcc-problem-matcher@master | |
- name: Compile vlasiator (Release build) | |
run: | | |
VLASIATOR_ARCH=github_actions make clean | |
VLASIATOR_ARCH=github_actions make -j 3 | |
# - name: Compile vlasiator (Release build) | |
# run: | | |
# srun -M carrington --job-name release_compile --interactive --nodes=1 -n 1 -c 16 --mem=40G -p short -t 0:10:0 bash -c 'module purge; module load GCC/11.2.0; module load OpenMPI/4.1.1-GCC-11.2.0 ; module load PMIx/4.1.0-GCCcore-11.2.0; module load PAPI/6.0.0.1-GCCcore-11.2.0; export VLASIATOR_ARCH=carrington_gcc_openmpi; make clean; make -j 16' | |
build_testpackage: | |
# Build Vlasiator with testpackage flags, on the carrington cluster | |
# (for subsequent running of the integration test package) | |
runs-on: carrington | |
steps: | |
- name: Clean workspace | |
run: | | |
rm -rf libraries library-build testpackage | |
rm -f libraries.tar.zst dtestpackage_check_description.txt testpackage-output.tar.gz metrics.txt stdout.txt stderr.txt testpackage_output_variables.txt | |
rm -f *.xml | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Make clean | |
run: VLASIATOR_ARCH=carrington_gcc_openmpi make clean | |
- uses: ursg/gcc-problem-matcher@master | |
- name: Compile vlasiator (Testpackage build) | |
run: | | |
export VLASIATOR_ARCH=carrington_gcc_openmpi | |
srun -M carrington --job-name tp_compile --interactive --nodes=1 -n 1 -c 16 --mem=40G -p short -t 0:10:0 bash -c 'module purge; module load GCC/11.2.0; module load OpenMPI/4.1.1-GCC-11.2.0 ; module load PMIx/4.1.0-GCCcore-11.2.0; module load PAPI/6.0.0.1-GCCcore-11.2.0; export VLASIATOR_ARCH=carrington_gcc_openmpi; make -j 16 testpackage; sleep 10s' | |
- name: Sleep for 10 seconds | |
run: sleep 10s | |
shell: bash | |
- name: Upload testpackage binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vlasiator-testpackage | |
path: vlasiator | |
if-no-files-found: error | |
#- name: Upload build log | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: Testpackage build log | |
# path: build.log | |
build_riscv: | |
runs-on: risc-v | |
needs: build_libraries_riscv | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Download libraries | |
uses: actions/download-artifact@v3 | |
with: | |
name: libraries-arriesgado | |
- name: Unpack libraries | |
run: tar -xzvf libraries-arriesgado.tar.gz | |
- name: STOPGAP remove conflicting submoduled header libraries from the tarball extract | |
run: rm ./libraries-arriesgado/include/fsgrid.hpp ./libraries-arriesgado/include/dccrg.hpp | |
- name: Make clean | |
run: VLASIATOR_ARCH=arriesgado make clean | |
- name: Compile vlasiator (RISC-V) | |
run: | | |
srun --interactive -p arriesgado-jammy -J vlasiator_build -n 1 -c 4 --pty -t 01:00:00 bash -lc 'module load boost papi openmpi; export VLASIATOR_ARCH=arriesgado; make -j4' | |
- name: Upload riscv binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vlasiator-riscv | |
path: vlasiator | |
if-no-files-found: error | |
build_tools: | |
# Build vlsvdiff and vlsvextract for testpackage use | |
runs-on: carrington | |
steps: | |
- name: Clean workspace | |
run: | | |
rm -rf libraries library-build testpackage | |
rm -f libraries.tar.zst dtestpackage_check_description.txt testpackage-output.tar.gz metrics.txt stdout.txt stderr.txt testpackage_output_variables.txt | |
rm -f *.xml | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: ursg/gcc-problem-matcher@master | |
- name: Make clean | |
run: VLASIATOR_ARCH=carrington_gcc_openmpi make clean | |
- name: Compile tools | |
run: | | |
export VLASIATOR_ARCH=carrington_gcc_openmpi | |
srun -M carrington --job-name tp_compile --interactive --nodes=1 -n 1 -c 16 --mem=40G -p short -t 0:10:0 bash -c 'module purge; module load GCC/11.2.0; module load OpenMPI/4.1.1-GCC-11.2.0 ; module load PMIx/4.1.0-GCCcore-11.2.0; module load PAPI/6.0.0.1-GCCcore-11.2.0; export VLASIATOR_ARCH=carrington_gcc_openmpi; make -j 16 vlsvextract vlsvdiff' | |
- name: Upload tools binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vlasiator-tools | |
path: | | |
vlsvextract_DP | |
vlsvdiff_DP | |
if-no-files-found: error | |
run_testpackage: | |
# Run the testpackage on the carrington cluster | |
runs-on: carrington | |
needs: [build_testpackage, build_tools] | |
continue-on-error: true | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Download testpackage binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: vlasiator-testpackage | |
- name: Download tools | |
uses: actions/download-artifact@v3 | |
with: | |
name: vlasiator-tools | |
- name: Run testpackage | |
id: run | |
run: | | |
chmod +x $GITHUB_WORKSPACE/vlasiator | |
chmod +x $GITHUB_WORKSPACE/vlsv*_DP | |
cd testpackage | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/libraries/lib | |
#srun -M carrington -t 01:30:00 --job-name CI_testpackage --interactive --nodes=1 -c 4 -n 16 --mem-per-cpu=5G -p short ./small_test_carrington_github_ci.sh | |
sbatch -W -o testpackage_run_output.txt ./small_test_carrington_github_ci.sh | |
cat testpackage_run_output.txt | |
cat $GITHUB_STEP_SUMMARY > $GITHUB_WORKSPACE/testpackage_check_description.txt | |
cd $GITHUB_WORKSPACE | |
tar -czvf testpackage-output.tar.gz testpackage_check_description.txt testpackage_output_variables.txt | |
if [ -f $GITHUB_WORKSPACE/testpackage_failed ]; then | |
# Fail this step if any test failed. | |
exit 1 | |
fi | |
- name: Upload testpackage output | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: testpackage-output | |
path: testpackage-output.tar.gz | |
# Note: Testpackage output is further processed in the pr_report.yml workflow | |
# (to produce Checks against pull requests) | |
build_ionosphereTests: | |
# Build IonosphereSolverTests miniApp | |
runs-on: carrington | |
needs: [build_libraries] | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
# - name: Download libraries | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: libraries | |
# - name: Unpack libraries | |
# run: tar --zstd -xvf libraries.tar.zstd | |
# - uses: ursg/gcc-problem-matcher@master | |
- name: Compile ionosphereSolverTests | |
run: | | |
cd mini-apps/ionosphereSolverTests/ | |
srun -M carrington --job-name iST_compile --interactive --nodes=1 -n 1 -c 3 --mem=40G -p short -t 0:10:0 bash -c 'module purge; module load GCC/11.2.0; module load OpenMPI/4.1.1-GCC-11.2.0 ; module load PMIx/4.1.0-GCCcore-11.2.0; module load PAPI/6.0.0.1-GCCcore-11.2.0; export VLASIATOR_ARCH=carrington_gcc_openmpi; make -j 3 main differentialFlux sigmaProfiles' | |
# VLASIATOR_ARCH=carrington_gcc_openmpi make -j 3 main differentialFlux sigmaProfiles | |
- name: Upload ionosphereTest binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: vlasiator-tools | |
path: | | |
mini-apps/ionosphereSolverTests/main | |
mini-apps/ionosphereSolverTests/differentialFlux | |
mini-apps/ionosphereSolverTests/sigmaProfiles | |
if-no-files-found: error |