pipeline {
    agent any
    stages {
        stage('install_requirements') {
            steps {
                sh """
                    [ -d venv ] && rm -rf venv
                    virtualenv -p python3 venv
                    . venv/bin/activate
                    pip install --upgrade pip
                    pip install -r requirements.txt
                """
            }
        }
        stage('bw test') {
            parallel {
                stage('ignore missing vaults') {
                    steps {
                        sh """
                            . venv/bin/activate
                            bw test --ignore-missing-faults
                        """
                    }
                }
                stage('dummy mode') {
                    when {
                        branch 'main'
                    }
                    steps {
                        sh """
                            . venv/bin/activate
                            export BW_VAULT_DUMMY_MODE=1
                            bw test
                        """
                    }
                }
                stage('determinism') {
                    steps {
                        sh """
                            . venv/bin/activate
                            export BW_VAULT_DUMMY_MODE=1
                            bw test --metadata-determinism 3 --config-determinism 3
                        """
                    }
                }
            }
        }
    }
    post {
        always {
            sh 'rm -rf venv'
        }
        changed {
            emailext body: "Check console output at ${env.BUILD_URL}",
                recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']],
                subject: "${buildStatus}: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'"
        }
    }
}