Jenkins ist eine weitverbreitete Open-Source-Automatisierungsplattform, die eng mit Git für Continuous Integration zusammenarbeitet. Durch automatisierte Builds und Tests ermöglicht Jenkins die frühzeitige Identifizierung potenzieller Probleme.
Das Jenkins-Plugin ‘Multijob’ ermöglicht die Bündelung mehrerer Jenkins-Jobs zu einer Gruppe. Aufgrund der Markierung dieses Plugins als veraltet erfolgt die Umstellung auf Jenkins-Pipeline.
Jenkins-Multijob
Mehrere Tests sind als Jenkins-Multijob implementiert. 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.
Während eines Simulationsschritts arbeiten die Programme parallel und kommunizieren über die OpenFOAM-Schnittstelle “externalCoupled”. Das bedeutet, dass zu bestimmten Zeitpunkten der Strömungslöser Temperaturen vom Heatsolver erhält und der Heatsolver Wärmestromdichten von OpenFOAM empfängt. Die Details zur Durchführung der Simulation und zur Kopplung sind in den Steuerdateien der Programme festgelegt.
Pipeline
Jenkins-Pipeline-Jobs werden über ein Skript definiert, das sogenannte Jenkinsfile. Dieses enthält die Pipeline-Konfiguration und -Schritte für Jenkins.
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' } } } } } }
In diesem Jenkinsfile wird die Pipeline für die gekoppelte Simulation definiert. 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