pipeline {
    agent {
        docker { image 'mcr.microsoft.com/dotnet/core/sdk:2.2' }
    }
    environment {
        AWS_ACCESS_KEY_ID = credentials('twitch-atlas-jenkins-access-key')
        AWS_SECRET_ACCESS_KEY = credentials('twitch-atlas-jenkins-secret')
        DB_ENGINE = 'sqlite'
        DISABLE_AUTH = 'true'
        DOTNET_CLI_HOME = "/tmp/"
    }
    parameters {
        choice(name: 'BuildEnvironment', choices: 'Staging\nProduction', description: 'Build environment for the service')
    }
    stages {
        stage('Setup') {
            steps {
				echo 'Cloning Resonance'
				checkout scm
            }
        }
		stage('Build') {
            steps {
				echo 'Building Projects'
				echo "Environment: ${params.BuildEnvironment}"
				echo 'Building Auth'
                sh "dotnet publish \"./Resonance.Api.Microservices.Auth/\" -c ${params.BuildEnvironment} -o \"./Builds/${params.BuildEnvironment}\""
				echo 'Zipping Auth Artifact'
				script{
					zip zipFile: "./Artifacts/${BuildEnvironment}/Auth_${env.BUILD_NUMBER}.zip", archive: false, dir:"./Resonance.Api.Microservices.Auth/Builds/${BuildEnvironment}"
				}
				echo 'Building Atlas Jobs'
				sh "dotnet publish \"./Resonance.Jobs.Atlas/\" -c ${params.BuildEnvironment} -o \"./Builds/${params.BuildEnvironment}\""
				script{
					zip zipFile: "./Artifacts/${BuildEnvironment}/Jobs_Atlas_${env.BUILD_NUMBER}.zip", archive: false, dir:"./Resonance.Jobs.Atlas//Builds/${BuildEnvironment}"
				}
				echo 'Building Atlas'
                sh "dotnet publish \"./Resonance.Api.Microservices.Atlas/\" -c ${params.BuildEnvironment} -o \"./Builds/${params.BuildEnvironment}\""
				script{
					zip zipFile: "./Artifacts/${BuildEnvironment}/Atlas_${env.BUILD_NUMBER}.zip", archive: false, dir:"./Resonance.Api.Microservices.Atlas/Builds/${BuildEnvironment}"
				}
			}
		}
		stage('Upload') {
            steps {
				script {
					echo 'Uploading Auth'
					s3Upload(
						file:"$workspace/Artifacts/${BuildEnvironment}/Auth_${env.BUILD_NUMBER}.zip", 
						bucket:'crsmcn-resonance-deploy', 
						path:"archives/${BuildEnvironment}/auth/deploy.zip"
					)
					echo 'Uploading Atlas'
					s3Upload(
						file:"$workspace/Artifacts/${BuildEnvironment}/Atlas_${env.BUILD_NUMBER}.zip", 
						bucket:'crsmcn-resonance-deploy', 
						path:"archives/${BuildEnvironment}/atlas/deploy.zip"
					)
					echo 'Uploading Atlas Jobs'
					s3Upload(
						file:"$workspace/Artifacts/${BuildEnvironment}/Jobs_Atlas_${env.BUILD_NUMBER}.zip", 
						bucket:'crsmcn-resonance-deploy', 
						path:"archives/${BuildEnvironment}/jobs/atlas/deploy.zip"
					)
				}
            }
        }
    }
}