pipeline {
    agent any
    environment {
        REGISTRY_NAME = 'registry.entcor/trust-module'
        IMAGE_NAME = "trust-module-frontend"
        GITEA_REPOSITORY_URL = "http://git.entcor/api/v1/repos/" 
    }
    stages {
        stage ('Initialize variables') {
            steps {
                script {
                    env.IMAGE_TAG = sh(script: "git describe --tags --abbrev=0", returnStdout: true).trim()
                }
            }
        }
        stage ('Build docker image') {
            when {
                expression { env.CHANGE_BRANCH?.startsWith('rc') }
            }
            steps {
                script {
                    def image = docker.build("${env.IMAGE_NAME}:${env.IMAGE_TAG}")
                    sh "docker tag ${env.IMAGE_NAME}:${env.IMAGE_TAG} ${env.REGISTRY_NAME}/${env.IMAGE_NAME}:${env.IMAGE_TAG}"
                }
            }
        }
        stage ('Push docker image to registry') {
            when {
                expression { env.CHANGE_BRANCH?.startsWith('rc') }
            }
            steps {
                script {
                    docker.withRegistry('https://registry.entcor/harbor/', 'harbor-credentials-id') {
                        docker.image("${env.REGISTRY_NAME}/${env.IMAGE_NAME}:${env.IMAGE_TAG}").push()
                    }
                }
            }
        }
    }
    post {
        always {
            script {
                echo "Cleaning up workspace..."
                sh "rm -rf ${env.WORKSPACE}/package/ || true"
                sh "rm -rf ${env.WORKSPACE}/rc/ || true"
            }
        }
        success {
            script {
                if (env.CHANGE_BRANCH?.startsWith('rc')) { 
                    echo "Attempting to merge PR ${env.CHANGE_ID} into master..."
                    withCredentials([usernamePassword(credentialsId: 'gitea_creds', usernameVariable: 'GITEA_USER', passwordVariable: 'GITEA_PASS')]) {
                        def prId = env.CHANGE_ID
                        sh """
                        curl -X POST \
                             -u "${GITEA_USER}:${GITEA_PASS}" \
                             -H "Content-Type: application/json" \
                             -d '{"do":"merge"}' \
                             http://git.entcor/api/v1/repos/DmitriyA/trust-module-frontend/pulls/${prId}/merge
                        """
                        echo "PR ${prId} merged successfully into master!"
                    }
                }
            }
        }
        failure {
            echo "Pipeline failed. Check the logs for details."
        }
        aborted {
            echo "Pipeline was aborted."
        }
    }
}
