Jenkins-Multijob
Die Jenkins-Meldung
gab Anlass zur Umstellung eines Multijobs auf Jenkins Pipeline. Der Multijob führte eine gekoppelte Rechnung mit openfoam und einem externen Strahlungs- und Wärmeleitungslöser aus. Er besteht aus den Schritten
- Init-Phase
- erstelle einen gemeinsamen Workspace für die beiden Simulationsprogramme
- Meshing der Openfoam-Geometrie
- gekoppelte Simualtion
- run openfoam
- run extern Heatsolver
Für jeden dieser Schritte gibt es einen Jenkins-Job.

Im Simulationsschritt laufen die Programme parallel und tauschen über die openfoam-Schnittstelle „externalCoupled“ Daten aus. D.h. zu bestimmten Zeitpunkten erhält der Strömungslöser Temperaturen vom Heatsolver und der Heatsolver Wärmestromdichten von openfoam. Die Steuerdatein der Programme enthalten dabei die Einzelheiten zur jeweiligen Simulation und zur Kopplung.

Pipeline
Jenkins-Pipeline-Jobs werden über ein script definiert, das sogenannte Jenkinsfile (siehe auch: How “Groovy” is a Jenkinsfile?).
Die Jenkins-Pipeline für die gekoppelte Simulation kann wie folgt beschrieben werden
pipeline { agent { // run on workstation kepler label 'kepler' } stages { stage('WorkSpace') { steps { echo "Build Workspace: $WORKSPACE" build quietPeriod: 0, job: 'Workspace-Box' } } stage('Meshing') { steps { echo "OF-Mesh" build quietPeriod: 0, job: 'OF-Meshing' } } stage('CoupledSimulation') { parallel { stage('Run-HeatSolver') { steps { build quietPeriod: 0, job: 'RunExternalHeatSolver' } } stage('Run-Openfoam') { steps { build quietPeriod: 120, job: 'RunOpenFoam' } } } } } }
Der wichtig Teil ist die parallel-Umgebung, die die beiden Jenkins-jobs RunExternalHeatSolver und RunOpenFoam gleichzeitig ausführt (openfoam wird mit einer Verzögerung von 2 Minuten gestartet, was in etwa der Rechenzeit der Init-Phase des Heatsolver entspricht).
Links