def telegram(String state, String version = "latest") {
    step([$class: 'TelegramBotBuilder', message: "[${env.JOB_NAME} - #${env.BUILD_NUMBER}](${env.RUN_DISPLAY_URL}) `${version}` for stage *${env.STAGE_NAME}* ${state}"])
}

pipeline {
    agent {
        label 'maildev1'
    }
    stages {
        stage('clean') {
            steps {
                sh 'make docker-clean'
            }
        }

        stage('pull base image'){
            steps {
                script {
                    docker.withRegistry('https://registry.yandex.net', 'robot-sender-docker-registry-creds') {
                        sh 'echo "Update docker registry credentials"'
                    }
                }
                sh 'make docker-pull-base'
            }
        }

        stage('build') {
            steps {
                sh 'make docker-build'
            }
        }

        stage('publish') {
            when {
                expression { return env.TAG_NAME != null && !env.TAG_NAME.isEmpty() }
            }
            steps {
                sh 'docker tag maillists-ui:local registry.yandex.net/maillists/ml-ui:$TAG_NAME'
	            sh 'docker tag maillists-tasks:local registry.yandex.net/maillists/ml-tasks:$TAG_NAME'
	            sh 'docker tag maillists-ui:local registry.yandex.net/maillists/ml-ui:latest'
	            sh 'docker tag maillists-tasks:local registry.yandex.net/maillists/ml-tasks:latest'

                script {
                    docker.withRegistry('https://registry.yandex.net', 'robot-sender-docker-registry-creds'){
                        def ml_ui_version_image = docker.image("registry.yandex.net/maillists/ml-ui:${env.TAG_NAME}")
                        def ml_ui_latest_image = docker.image("registry.yandex.net/maillists/ml-ui:latest")
                        def ml_tasks_version_image = docker.image("registry.yandex.net/maillists/ml-tasks:${env.TAG_NAME}")
                        def ml_tasks_latest_image = docker.image("registry.yandex.net/maillists/ml-tasks:latest")

                        ml_ui_version_image.push()
                        ml_ui_latest_image.push()
                        ml_tasks_version_image.push()
                        ml_tasks_latest_image.push()
                    }
                }
            }
        }

        stage('deploy') {
            when {
                expression { return env.TAG_NAME != null && !env.TAG_NAME.isEmpty() }
            }
            steps {
                script {
                    updateQloudComponent config: """
                        {
                            "qloudUri": "https://platform.yandex-team.ru",
                            "envId": "mail.maillists.unstable",
                            "components": [
                                {
                                    "component": "ml-ui",
                                    "image": "maillists/ml-ui",
                                    "tag": "$TAG_NAME"
                                },
                                {
                                    "component": "ml-tasks",
                                    "image": "maillists/ml-tasks",
                                    "tag": "$TAG_NAME"
                                }
                            ]
                        }
                    """,
                    credentialsId: 'qloud-robot-sherlock-token'
                }
            }
        }
    }
    post {
        failure {
            telegram('failed')
        }
    }
}