pipeline {
    agent any

    environment {
        GITEA_REPO_PATH = "lucas/gitea"
        GITEA_API_URL = "https://gitea.lucasroyer.fr/api/v1"
    }

    stages {
        stage('Check git...') {
            steps {
                checkout scm
            }
        }
        stage('Deploy') {
            steps {
                withCredentials([
                    file(credentialsId: 'gitea-app-env', variable: 'APP_ENV_PATH'),
                    file(credentialsId: 'gitea-db-env', variable: 'DB_ENV_PATH')
                ]) {
                    echo "Deploy new gitea..."
                    sh """
                        cp "\$APP_ENV_PATH" app.env
                        cp "\$DB_ENV_PATH" db.env
                        docker compose up -d --remove-orphans
                        rm -f app.env db.env
                    """
                }
            }
        }
    }

    post {
        always { 
            script {
                echo "Send Gitea check..."
                // Get and store SHA
                def commitSha = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()
                
                // Convert from Jenkins to Gitea API
                def buildState = currentBuild.currentResult == 'SUCCESS' ? 'success' : 'failure'
                def buildDesc = currentBuild.currentResult == 'SUCCESS' ? 'Build successful' : 'Build failed'

                // Send it to Gitea API with secret 'gitea-token'
                withCredentials([string(credentialsId: 'gitea-token', variable: 'GITEA_TOKEN')]) {
                    sh "curl -f -X POST ${GITEA_API_URL}/repos/${GITEA_REPO_PATH}/statuses/${commitSha} " +
                    "-H 'Authorization: token \$GITEA_TOKEN' " +
                    "-H 'Content-Type: application/json' " +
                    "-d '{\"state\": \"${buildState}\", \"target_url\": \"${env.BUILD_URL}\", \"description\": \"${buildDesc}\", \"context\": \"jenkins-ci\"}'"
                }
            }
            echo "Clean unused image..."
            sh "docker image prune -f" 
        }
        success {
            echo "Success !"
        }
        failure {
            echo "Failed."
        }
    }
}