/* 1. added client_max_body_size 0; to avoid 413 error */ node { def app def registryAddress def registryCredential try { // environment { registryAddress = "https://000-sidali.kemdiktisaintek.go.id" registryCredential = 'DockerRegistry-ID' // } stage('Checkout') { checkout scm } stage('Initialize'){ def dockerHome = tool 'myDocker' env.PATH = "${dockerHome}/bin:${env.PATH}" } stage('Environment') { sh 'git --version' echo "Branch: master" sh 'docker -v' sh 'printenv' } stage('Test Build'){ sh 'docker build -t ptb-be -f dockerfile .' } stage('Build Deploy '){ docker.withTool("myDocker"){ docker.withRegistry(registryAddress, registryCredential) { def dockerImage = docker.build("ptb-be:${env.BUILD_ID}") /* Push the container to the custom Registry */ dockerImage.push() dockerImage.push('latest') } } } stage('Deploy to Server'){ // Deploy menggunakan Docker plugin // Pastikan Docker Host sudah dikonfigurasi di Jenkins (Manage Jenkins > Configure System > Docker) // Server credential ID: 'Docker-Server-Cert' (untuk TLS) atau kosongkan jika tanpa TLS def serverDockerHost = 'tcp://000-sidali.kemdiktisaintek.go.id:2376' def serverCredential = 'Docker-Server-Cert' // Credential untuk Docker TLS certificates def imageName = '000-sidali.kemdiktisaintek.go.id/ptb-be:latest' def composeDir = '~/workdir/production' // Sesuaikan dengan path di server docker.withTool('myDocker') { // Connect ke remote Docker daemon // docker.withServer(serverDockerHost, serverCredential) { // Login ke registry untuk pull image docker.withRegistry(registryAddress, registryCredential) { // Pull image terbaru sh "docker pull ${imageName}" // Stop dan remove container lama (ignore error jika tidak ada) sh "docker stop ptb-be || true" sh "docker rm ptb-be || true" // Jalankan container baru sh """ cd ${composeDir} && docker-compose stop ptb-be && docker-compose rm -f ptb-be && docker-compose up -d ptb-be """ echo "Deploy completed successfully" } // } } } } catch (err) { throw err } }