pipeline {
    agent any

    stages {
        stage('Build Docker Container') {
            steps {
                script {
                    // Создаем Docker образ
                    docker.build("builder_temp_contoller_firmware", "-f ./tools/dockerfile .")
                    docker.image('builder_temp_contoller_firmware').inside { sh 'make clean MC_UPLOADER=/app/microcontroller_flash_uploader' }
                }
            }
        }

        stage('Check') {
            steps {
                script {
                    // Запускаем контейнер и выполняем тесты
                    docker.image('builder_temp_contoller_firmware').inside {
                        // Здесь вы можете выполнять команды внутри контейнера
                        sh 'make check MC_UPLOADER=/app/microcontroller_flash_uploader'
                        //sh 'while true; do sleep 1000; done'
                        // Например, запуск тестов:
                        // sh 'pytest tests/'
                    }
                }
            }
        }

         stage('Unit Unit Tests') {
            steps {
                script {
                    // Запускаем контейнер и выполняем тесты
                    docker.image('builder_temp_contoller_firmware').inside {
                        
                        sh 'make test CPPUTEST=/app/cpputest MC_UPLOADER=/app/microcontroller_flash_uploader'
                    }
                }
            }
        }

        stage('Build') {
            steps {
                script {
                    // Запускаем контейнер и выполняем тесты
                    docker.image('builder_temp_contoller_firmware').inside {
                        // Здесь вы можете выполнять команды внутри контейнера
                        sh 'make all ARM_CC_PREFIX=/app/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi MC_UPLOADER=/app/microcontroller_flash_uploader'
                        // Например, запуск тестов:
                        // sh 'pytest tests/'
                    }
                }
            }
        }
    }

    post {
        always {
            script {
                // Удаляем все контейнеры после выполнения
                sh 'docker container prune -f'
                // Удаляем все образы, если нужно
                sh 'docker rmi builder_temp_contoller_firmware || true'
            }
        }
    }
    
}