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//$(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//$(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: '/opt/codiki', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'codiki-backend.tar,codiki-frontend.tar,docker-compose.yml' ), sshTransfer( cleanRemote: false, excludes: '', execCommand: """ cd /opt/codiki sudo /usr/bin/docker load < /opt/codiki/codiki-backend.tar sudo /usr/bin/docker load < /opt/codiki/codiki-frontend.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/codiki', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '' ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true ) ] ) } } } }