pipeline {
    agent any

    stages {
        stage('Configuration') {
            steps {
                dir('codiki-properties') {
                    git url:'https://gitea.takiguchi.ovh/Codiki/codiki-properties.git', branch: 'hexagonal-reforged', credentialsId: 'Jenkins-gitea'
                }
                script {
                    sh 'sed -i "s/<POSTGRES_PASSWORD>/$(cat ./codiki-properties/passwords/postgres)/g" ./codiki-properties/application-prod.yml'
                    sh 'cp ./codiki-properties/application-prod.yml ./backend/codiki-launcher/src/main/resources/application-prod.yml'
                    sh 'sed -i "s/<POSTGRES_PASSWORD>/$(cat ./codiki-properties/passwords/postgres)/g" ./docker-compose.yml'
                }
            }
        }
        stage('Build') {
            steps {
                script {
                    sh """
                        sudo /usr/bin/docker build -t codiki-backend -f ./Dockerfile-backend . --no-cache
                        sudo /usr/bin/docker build -t codiki-frontend -f ./Dockerfile-frontend . --no-cache
                        sudo /usr/bin/docker save codiki-backend:latest -o ./codiki-backend.tar
                        sudo /usr/bin/docker save codiki-frontend:latest -o ./codiki-frontend.tar
                        sudo chown jenkins:jenkins ./codiki-backend.tar
                        sudo chown jenkins:jenkins ./codiki-frontend.tar
                        chmod 644 ./codiki-backend.tar
                        chmod 644 ./codiki-frontend.tar
                    """
                }
            }
        }
        // stage('Deploy') {
        //     steps {
        //         sshPublisher(
        //             publishers: [
        //                 sshPublisherDesc(
        //                     configName: 'DebianServer [codiki]',
        //                     transfers: [
        //                         sshTransfer(
        //                             cleanRemote: false,
        //                             excludes: '',
        //                             execCommand: '',
        //                             execTimeout: 120000,
        //                             flatten: false,
        //                             makeEmptyDirs: false,
        //                             noDefaultExcludes: false,
        //                             patternSeparator: '[, ]+',
        //                             remoteDirectory: '',
        //                             remoteDirectorySDF: false,
        //                             removePrefix: '',
        //                             sourceFiles: 'codiki-backend.tar,codiki-frontend.tar,docker-compose.yml'
        //                         ),
        //                         sshTransfer(
        //                             cleanRemote: false,
        //                             excludes: '',
        //                             execCommand: """
        //                                 cd /opt/nginx
        //                                 sudo /usr/bin/docker load < /opt/nginx/takiguchi-nginx.tar
        //                                 sudo /usr/bin/docker compose down
        //                                 sudo /usr/bin/docker compose up --detach
        //                             """,
        //                             execTimeout: 120000,
        //                             flatten: false,
        //                             makeEmptyDirs: false,
        //                             noDefaultExcludes: false,
        //                             patternSeparator: '[, ]+',
        //                             remoteDirectory: '/opt/nginx',
        //                             remoteDirectorySDF: false,
        //                             removePrefix: '',
        //                             sourceFiles: ''
        //                         )
        //                     ],
        //                     usePromotionTimestamp: false,
        //                     useWorkspaceInPromotion: false,
        //                     verbose: true
        //                 )
        //             ]
        //         )
        //     }
        // }
    }
}
