Jenkinsfile 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. 1. added
  3. client_max_body_size 0;
  4. to avoid 413 error
  5. */
  6. node {
  7. def app
  8. def registryAddress
  9. def registryCredential
  10. try {
  11. // environment {
  12. registryAddress = "https://000-sidali.kemdiktisaintek.go.id"
  13. registryCredential = 'DockerRegistry-ID'
  14. // }
  15. stage('Checkout') {
  16. checkout scm
  17. }
  18. stage('Initialize'){
  19. def dockerHome = tool 'myDocker'
  20. env.PATH = "${dockerHome}/bin:${env.PATH}"
  21. }
  22. stage('Environment') {
  23. sh 'git --version'
  24. echo "Branch: master"
  25. sh 'docker -v'
  26. sh 'printenv'
  27. }
  28. stage('Test Build'){
  29. sh 'docker build -t ptb-be -f dockerfile .'
  30. }
  31. stage('Build Deploy '){
  32. docker.withTool("myDocker"){
  33. docker.withRegistry(registryAddress, registryCredential) {
  34. def dockerImage = docker.build("ptb-be:${env.BUILD_ID}")
  35. /* Push the container to the custom Registry */
  36. dockerImage.push()
  37. dockerImage.push('latest')
  38. }
  39. }
  40. }
  41. stage('Deploy to Server'){
  42. // Deploy menggunakan Docker plugin
  43. // Pastikan Docker Host sudah dikonfigurasi di Jenkins (Manage Jenkins > Configure System > Docker)
  44. // Server credential ID: 'Docker-Server-Cert' (untuk TLS) atau kosongkan jika tanpa TLS
  45. def serverDockerHost = 'tcp://000-sidali.kemdiktisaintek.go.id:2376'
  46. def serverCredential = 'Docker-Server-Cert' // Credential untuk Docker TLS certificates
  47. def imageName = '000-sidali.kemdiktisaintek.go.id/ptb-be:latest'
  48. def composeDir = '~/workdir/production' // Sesuaikan dengan path di server
  49. docker.withTool('myDocker') {
  50. // Connect ke remote Docker daemon
  51. // docker.withServer(serverDockerHost, serverCredential) {
  52. // Login ke registry untuk pull image
  53. docker.withRegistry(registryAddress, registryCredential) {
  54. // Pull image terbaru
  55. sh "docker pull ${imageName}"
  56. // Stop dan remove container lama (ignore error jika tidak ada)
  57. sh "docker stop ptb-Backend || true"
  58. sh "docker rm ptb-Backend || true"
  59. // Jalankan container baru
  60. sh """
  61. cd ${composeDir} &&
  62. docker-compose stop ptb-Backend &&
  63. docker-compose rm -f ptb-Backend &&
  64. docker-compose up -d ptb-Backend
  65. """
  66. echo "Deploy completed successfully"
  67. }
  68. // }
  69. }
  70. }
  71. }
  72. catch (err) {
  73. throw err
  74. }
  75. }