pipeline {
    agent {
        docker {
            image 'debian:stretch-slim' 
        }
    }

    stages {
        stage('Requirements') { 
            steps {
                sh 'apt-get -y update && apt-get -y install git python-pip cloc && pip install platformio' 
            }
        }
        stage('Build') {
            steps {
                sh 'pio run'
            }
            post {
                always {
                    archiveArtifacts '.pioenvs/nodemcu/firmware.bin, .pioenvs/nodemcu/firmware.elf'
                }
            }
        }
        stage('Coverage') {
            steps {
                sh 'cloc --by-file --xml --out=.test/cloc.xml src include'
            }
            post {
                always {
                    recordIssues(tools: [taskScanner(ignoreCase: true, includePattern: 'src/*.*', normalTags: 'TODO')])
                    sloccountPublish encoding: '', pattern: '.test/cloc.xml'
                }
            }
        }
        stage('Upload') {
            steps {
                sh 'make otaupload'
            }
        }
    }
}