pipeline {
    agent {
        dockerfile {
            dir 'lab7'
        }
        }
	parameters {
        gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
        buildSelector(
			defaultSelector: lastSuccessful(),
			description: 'Which build to use for copying artifacts',
			name: 'BUILD_SELECTOR'
		)
    }
    stages {
        stage('Stage 1') {
            steps {
                    sh 'cd lab7/'
                    git branch: "${params.BRANCH}", url: 'https://git.wmi.amu.edu.pl/s449288/ium_s449288.git'
				    sh 'chmod u+x evaluate.py'
					echo 'Copying datasets from the create-dataset job...'
					copyArtifacts filter: 'lego_sets_clean_test.csv', projectName: 's449288-create-dataset'
					echo 'Datasets copied'					
					echo 'Copying model from the training job...'
					copyArtifacts filter: 'lego_reg_model.tar.gz', projectName: "s449288-training/${BRANCH}/", selector: buildParameter('BUILD_SELECTOR') 				
					echo 'Model copied'
					sh 'tar xvzf lego_reg_model.tar.gz'				
					echo 'Optional copying of the metrics file from previous build...'
					copyArtifacts filter: 'eval_results.txt', projectName: 's449288-evaluation/master/', optional: true
					echo 'Metrics file copied if it did not exist'
					echo 'Evaluating model...'
					sh 'python3 evaluate.py'
					echo 'Model evaluated. Metrics saved. Plot saved.'
                    sh 'head eval_results.txt'	
					sh 'file error_plot.jpg'
                    echo 'Archiving metrics file...'
                    archiveArtifacts 'eval_results.txt'
                    echo 'File archived'
                    script {
                        LAST_MAE = sh (
                        script: 'tail -1 eval_results.txt',
                        returnStdout: true
                        ).trim()
                    }
				}
            }
        }
	post {
        success {
            emailext body: "SUCCESS - ${LAST_MAE} MAE", subject: 's449288-evaluation build status', to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
        }
        failure {
            emailext body: "FAILURE - ${LAST_MAE} MAE", subject: 's449288-evaluation build status', to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
        }
        unstable {
            emailext body: "UNSTABLE - ${LAST_MAE} MAE", subject: 's449288-evaluation build status', to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
        }
        changed {
            emailext body: "CHANGED - ${LAST_MAE} MAE", subject: 's449288-evaluation build status', to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
        }		
    }
}