pipeline {
    agent any
    environment {
        BUILDDIR = 'build-unittests'
    }
    stages {
        stage('Create Docker') {
            agent {
                dockerfile {
                    dir 'automation'
                    additionalBuildArgs  '--no-cache'
                    reuseNode true
                }
            }
            steps {
                sh 'rm -rf $BUILDDIR'
            }
        }
        stage('Configure') {
            agent {
                dockerfile {
                    dir 'automation'
                    reuseNode true
                }
            }
            steps {
                dir(BUILDDIR) {
                    sh 'cmake -DFSFW_OSAL=host -DFSFW_BUILD_UNITTESTS=ON ..'
                }
            }
        }
        stage('Build') {
            agent {
                dockerfile {
                    dir 'automation'
                    reuseNode true
                }
            }
            steps {
                dir(BUILDDIR) {
                    sh 'cmake --build . -j'
                }
            }
        }
        stage('Unittests') {
            agent {
                dockerfile {
                    dir 'automation'
                    reuseNode true
                }
            }
            steps {
                dir(BUILDDIR) {
                    sh 'cmake --build . -- fsfw-tests_coverage -j'
                }
            }
        }
        stage('Valgrind') {
            agent {
                dockerfile {
                    dir 'automation'
                    reuseNode true
                }
            }
            steps {
                dir(BUILDDIR) {
                    sh 'valgrind --leak-check=full --error-exitcode=1 ./fsfw-tests'
                }
            }
        }
    }
}