pipeline {
    agent {
        dockerfile true
    }

    parameters {
        string(
            defaultValue: '64',
            description: 'Batch size used in gradient',
            name: 'BATCHSIZE',
            trim: true
        )
        string(
            defaultValue: '5',
            description: 'Number of iterations',
            name: 'EPOCHS',
            trim: true
        )
        buildSelector(
			defaultSelector: lastSuccessful(),
			description: 'Which build to use for copying artifacts',
			name: 'BUILD_SELECTOR'
		)
    }
    
    stages {
        stage('Copy artifacts') {
            steps {
                copyArtifacts fingerprintArtifacts: true, projectName: 's444498-create-dataset', selector: buildParameter('BUILD_SELECTOR')
            }
        }
        stage('Train model') {
            steps {
                sh "chmod u+x ./neutral_network.py"
                sh "python3 neutral_network.py -e ${params.EPOCHS} -b ${params.BATCHSIZE}"
            }
        }
        stage('Archive model') {
            steps {
                archiveArtifacts artifacts: "model.zip", onlyIfSuccessful: true
            }
        }
    }

    post {
        success {
            emailext body: "SUCCESS", subject: "s444498-training", to: "e19191c5.uam.onmicrosoft.com@emea.teams.ms"
            build job: "s444498-evaluation/master"
        }

        failure {
            emailext body: "FAILURE", subject: "s444498-training", to: "e19191c5.uam.onmicrosoft.com@emea.teams.ms"
        }

        unstable {
            emailext body: 'UNSTABLE', subject: "s444498-training", to: "e19191c5.uam.onmicrosoft.com@emea.teams.ms"
        }

        changed {
            emailext body: 'CHANGED', subject: "s444498-training", to: "e19191c5.uam.onmicrosoft.com@emea.teams.ms"
        }		
    }
}