new locking mechanism
only runtime test needs to run exclusively. lock per job, not per pipeline. should be more stable and allow more concurrency needs python script for job management on gitlab-runner
This commit is contained in:
parent
97e289decc
commit
f112d11985
|
@ -8,26 +8,20 @@ stages:
|
||||||
- performance
|
- performance
|
||||||
- deploy
|
- deploy
|
||||||
- update_master
|
- update_master
|
||||||
- distclean
|
|
||||||
- clean
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
before_script:
|
before_script:
|
||||||
- if [ $(awk "/$CI_PIPELINE_ID/{print NR}" $LOCAL_HOME/GitLabCI.queue)x == 'x' ];
|
- ${LOCAL_HOME}/bin/manage_pool ${CI_JOB_ID} --nonblocking
|
||||||
then echo $CI_PIPELINE_ID >> $LOCAL_HOME/GitLabCI.queue;
|
|
||||||
fi
|
|
||||||
- while [ $(awk "/$CI_PIPELINE_ID/{print NR}" $LOCAL_HOME/GitLabCI.queue) != 1 ];
|
|
||||||
do sleep 5m;
|
|
||||||
echo -e "Currently queued pipelines:\n$(cat $LOCAL_HOME/GitLabCI.queue)\n";
|
|
||||||
done
|
|
||||||
- source $DAMASKROOT/env/DAMASK.sh
|
- source $DAMASKROOT/env/DAMASK.sh
|
||||||
- cd $DAMASKROOT/PRIVATE/testing
|
- cd $DAMASKROOT/PRIVATE/testing
|
||||||
- echo Job start:" $(date)"
|
- echo Job start:" $(date)"
|
||||||
|
|
||||||
###################################################################################################
|
|
||||||
after_script:
|
after_script:
|
||||||
|
- ${LOCAL_HOME}/bin/manage_pool ${CI_JOB_ID} --unregister
|
||||||
- echo Job end:" $(date)"
|
- echo Job end:" $(date)"
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
variables:
|
variables:
|
||||||
# ===============================================================================================
|
# ===============================================================================================
|
||||||
|
@ -58,36 +52,35 @@ variables:
|
||||||
IntelMarc: "Compiler/Intel/19.1.2 Libraries/IMKL/2020"
|
IntelMarc: "Compiler/Intel/19.1.2 Libraries/IMKL/2020"
|
||||||
HDF5Marc: "HDF5/1.12.1/Intel-19.1.2"
|
HDF5Marc: "HDF5/1.12.1/Intel-19.1.2"
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
checkout:
|
checkout:
|
||||||
stage: prepare
|
stage: prepare
|
||||||
before_script:
|
before_script:
|
||||||
- echo $CI_PIPELINE_ID >> $LOCAL_HOME/GitLabCI.queue
|
- ${LOCAL_HOME}/bin/manage_pool ${CI_JOB_ID} --nonblocking
|
||||||
- while [ $(awk "/$CI_PIPELINE_ID/{print NR}" $LOCAL_HOME/GitLabCI.queue) != 1 ];
|
- echo Job start:" $(date)"
|
||||||
do sleep 5m;
|
|
||||||
echo -e "Currently queued pipelines:\n$(cat $LOCAL_HOME/GitLabCI.queue)\n";
|
|
||||||
done
|
|
||||||
script:
|
script:
|
||||||
- mkdir -p $DAMASKROOT
|
- mkdir -p ${DAMASKROOT}
|
||||||
- mkdir -p $TESTROOT
|
- mkdir -p ${TESTROOT}
|
||||||
- cd $DAMASKROOT
|
- cd ${DAMASKROOT}
|
||||||
- git clone -q git@git.damask.mpie.de:damask/DAMASK.git .
|
- git clone -q git@git.damask.mpie.de:damask/DAMASK.git .
|
||||||
- git checkout $CI_COMMIT_SHA
|
- git checkout ${CI_COMMIT_SHA}
|
||||||
- git submodule update --init
|
- git submodule update --init
|
||||||
- source env/DAMASK.sh
|
- source env/DAMASK.sh
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
pytest:
|
pytest:
|
||||||
stage: python
|
stage: python
|
||||||
script:
|
script:
|
||||||
- cd $DAMASKROOT/python
|
- cd ${DAMASKROOT}/python
|
||||||
- COLUMNS=256 pytest --basetemp=${TESTROOT}/python -v --cov --cov-report=term
|
- pytest --basetemp ${TESTROOT}/python -v --cov --cov-report=term
|
||||||
- coverage report --fail-under=90
|
- coverage report --fail-under=90
|
||||||
|
|
||||||
mypy:
|
mypy:
|
||||||
stage: python
|
stage: python
|
||||||
script:
|
script:
|
||||||
- cd $DAMASKROOT/python
|
- cd ${DAMASKROOT}/python
|
||||||
- mypy -m damask
|
- mypy -m damask
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,35 +90,35 @@ compile_grid_Intel:
|
||||||
script:
|
script:
|
||||||
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'compile and grid' --basetemp=${TESTROOT}/compile_grid_Intel
|
- pytest -k 'compile and grid' --basetemp ${TESTROOT}/compile_grid_Intel
|
||||||
|
|
||||||
compile_mesh_Intel:
|
compile_mesh_Intel:
|
||||||
stage: compile
|
stage: compile
|
||||||
script:
|
script:
|
||||||
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'compile and mesh' --basetemp=${TESTROOT}/compile_mesh_Intel
|
- pytest -k 'compile and mesh' --basetemp ${TESTROOT}/compile_mesh_Intel
|
||||||
|
|
||||||
compile_grid_GNU:
|
compile_grid_GNU:
|
||||||
stage: compile
|
stage: compile
|
||||||
script:
|
script:
|
||||||
- module load $GNUCompiler $MPI_GNU $PETSc_GNU
|
- module load $GNUCompiler $MPI_GNU $PETSc_GNU
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'compile and grid' --basetemp ${TESTROOT}/compile_grid_GNU
|
- pytest -k 'compile and grid' --basetemp ${TESTROOT}/compile_grid_GNU
|
||||||
|
|
||||||
compile_mesh_GNU:
|
compile_mesh_GNU:
|
||||||
stage: compile
|
stage: compile
|
||||||
script:
|
script:
|
||||||
- module load $GNUCompiler $MPI_GNU $PETSc_GNU
|
- module load $GNUCompiler $MPI_GNU $PETSc_GNU
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'compile and mesh' --basetemp ${TESTROOT}/compile_mesh_GNU
|
- pytest -k 'compile and mesh' --basetemp ${TESTROOT}/compile_mesh_GNU
|
||||||
|
|
||||||
compile_Marc:
|
compile_Marc:
|
||||||
stage: compile
|
stage: compile
|
||||||
script:
|
script:
|
||||||
- module load $IntelMarc $HDF5Marc $MSC
|
- module load $IntelMarc $HDF5Marc $MSC
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'compile and Marc' --basetemp ${TESTROOT}/compile_Marc
|
- pytest -k 'compile and Marc' --basetemp ${TESTROOT}/compile_Marc
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
@ -145,19 +138,21 @@ setup_mesh:
|
||||||
- cmake -DDAMASK_SOLVER=MESH -DCMAKE_INSTALL_PREFIX=${DAMASKROOT} ${DAMASKROOT}
|
- cmake -DDAMASK_SOLVER=MESH -DCMAKE_INSTALL_PREFIX=${DAMASKROOT} ${DAMASKROOT}
|
||||||
- make -j2 all install
|
- make -j2 all install
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
core:
|
core:
|
||||||
stage: fortran
|
stage: fortran
|
||||||
script:
|
script:
|
||||||
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
- module load $IntelCompiler $MPI_Intel $PETSc_Intel
|
||||||
- cd pytest
|
- cd pytest
|
||||||
- COLUMNS=256 pytest -k 'not compile' --basetemp ${TESTROOT}/fortran -v
|
- pytest -k 'not compile' --basetemp ${TESTROOT}/fortran -v
|
||||||
|
|
||||||
# Needs closer look
|
# Needs closer look
|
||||||
# Phenopowerlaw_singleSlip:
|
# Phenopowerlaw_singleSlip:
|
||||||
# stage: fortran
|
# stage: fortran
|
||||||
# script: Phenopowerlaw_singleSlip/test.py
|
# script: Phenopowerlaw_singleSlip/test.py
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
grid_runtime:
|
grid_runtime:
|
||||||
stage: performance
|
stage: performance
|
||||||
|
@ -171,6 +166,9 @@ grid_runtime:
|
||||||
- ./runtime.py --input_dir $DAMASKROOT/examples/grid --output_dir ${REPO_DIR} --tag ${CI_COMMIT_SHA}
|
- ./runtime.py --input_dir $DAMASKROOT/examples/grid --output_dir ${REPO_DIR} --tag ${CI_COMMIT_SHA}
|
||||||
- if [ ${CI_COMMIT_BRANCH} == development ]; then git commit -am ${CI_PIPELINE_ID}_${CI_COMMIT_SHA}; git push; fi
|
- if [ ${CI_COMMIT_BRANCH} == development ]; then git commit -am ${CI_PIPELINE_ID}_${CI_COMMIT_SHA}; git push; fi
|
||||||
resource_group: runtime
|
resource_group: runtime
|
||||||
|
before_script:
|
||||||
|
- ${LOCAL_HOME}/bin/manage_pool ${CI_JOB_ID} --blocking
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
source_distribution:
|
source_distribution:
|
||||||
|
@ -179,7 +177,8 @@ source_distribution:
|
||||||
- cd $(mktemp -d)
|
- cd $(mktemp -d)
|
||||||
- ${DAMASKROOT}/PRIVATE/releasing/tar.xz/create.sh ${DAMASKROOT} ${CI_COMMIT_SHA}
|
- ${DAMASKROOT}/PRIVATE/releasing/tar.xz/create.sh ${DAMASKROOT} ${CI_COMMIT_SHA}
|
||||||
|
|
||||||
##################################################################################################
|
|
||||||
|
###################################################################################################
|
||||||
merge_into_master:
|
merge_into_master:
|
||||||
stage: update_master
|
stage: update_master
|
||||||
script:
|
script:
|
||||||
|
@ -192,6 +191,7 @@ merge_into_master:
|
||||||
git commit -m "[skip ci] updated version information after successful test of $TESTEDREV"
|
git commit -m "[skip ci] updated version information after successful test of $TESTEDREV"
|
||||||
- export UPDATEDREV=$(git describe) # tested state + 1 commit
|
- export UPDATEDREV=$(git describe) # tested state + 1 commit
|
||||||
- git checkout master
|
- git checkout master
|
||||||
|
- git pull
|
||||||
- git merge $UPDATEDREV -s recursive -X ours # conflicts occur only for inconsistent state
|
- git merge $UPDATEDREV -s recursive -X ours # conflicts occur only for inconsistent state
|
||||||
- git push origin master # master is now tested version and has updated VERSION file
|
- git push origin master # master is now tested version and has updated VERSION file
|
||||||
- git checkout development
|
- git checkout development
|
||||||
|
@ -200,20 +200,3 @@ merge_into_master:
|
||||||
- git push origin development # development is unchanged (as master is based on it) but has updated VERSION file
|
- git push origin development # development is unchanged (as master is based on it) but has updated VERSION file
|
||||||
only:
|
only:
|
||||||
- development
|
- development
|
||||||
|
|
||||||
###################################################################################################
|
|
||||||
remove_data:
|
|
||||||
stage: distclean
|
|
||||||
before_script:
|
|
||||||
- echo "Removing data and lock of pipeline $CI_PIPELINE_ID"
|
|
||||||
script:
|
|
||||||
- rm -rf $LOCAL_HOME/GitLabCI_Pipeline_$CI_PIPELINE_ID
|
|
||||||
- sed -i "/$CI_PIPELINE_ID/d" $LOCAL_HOME/GitLabCI.queue # in case pipeline was manually (web GUI) restarted and releaseLock was performed already
|
|
||||||
|
|
||||||
###################################################################################################
|
|
||||||
remove_lock:
|
|
||||||
stage: clean
|
|
||||||
before_script:
|
|
||||||
- echo "Removing lock of pipeline $CI_PIPELINE_ID"
|
|
||||||
when: always
|
|
||||||
script: sed -i "/$CI_PIPELINE_ID/d" $LOCAL_HOME/GitLabCI.queue
|
|
||||||
|
|
Loading…
Reference in New Issue