pipeline {
    agent any

    environment {
        REGISTRY   = 'gitea.plpark.ectech.co.kr'
        IMAGE_NAME = "${REGISTRY}/plpark/crossword"
        IMAGE_TAG  = "${env.BUILD_NUMBER}"
        NAMESPACE  = 'plpark-int-ns'
    }

    options {
        buildDiscarder(logRotator(numToKeepStr: '20'))
    }

    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    url: 'https://gitea.plpark.ectech.co.kr/plpark/crossword.git',
                    credentialsId: 'gitea-registry'
            }
        }

        stage('Build & Push Image') {
            steps {
                withEnv(["PATH+DOCKER=/dockerbin"]) {
                    withCredentials([usernamePassword(
                            credentialsId: 'gitea-registry',
                            usernameVariable: 'REG_USER',
                            passwordVariable: 'REG_PASS')]) {
                        sh '''
                            set -e
                            echo "$REG_PASS" | docker login "$REGISTRY" -u "$REG_USER" --password-stdin
                            docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:latest" .
                            docker push "$IMAGE_NAME:$IMAGE_TAG"
                            docker push "$IMAGE_NAME:latest"
                        '''
                    }
                }
            }
        }

        stage('Deploy to Rancher') {
            steps {
                withEnv(["PATH+DOCKER=/dockerbin"]) {
                    withCredentials([file(credentialsId: 'rancher-kubeconfig', variable: 'KUBECONFIG_FILE')]) {
                        sh '''
                            set -e
                            export KUBECONFIG="$KUBECONFIG_FILE"
                            sed "s|__IMAGE__|$IMAGE_NAME:$IMAGE_TAG|g" k8s/deployment.yaml > /tmp/crossword-deploy.yaml
                            kubectl apply -f /tmp/crossword-deploy.yaml
                            kubectl -n "$NAMESPACE" rollout status deployment/crossword --timeout=180s
                        '''
                    }
                }
            }
        }
    }

    post {
        success {
            echo "Deployed ${IMAGE_NAME}:${IMAGE_TAG}  ->  http://192.168.0.216:31380  (https://crossword.plpark.ectech.co.kr)"
        }
        always {
            sh 'rm -f /tmp/crossword-deploy.yaml || true'
        }
    }
}
