Jenkinsfile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. pipeline {
  2. agent {
  3. label "swarm"
  4. }
  5. environment {
  6. docker_registry='dev-registry.infoclinica.ru:5000'
  7. docker_image='node'
  8. }
  9. parameters {
  10. string(
  11. name: "repo",
  12. defaultValue: "prod",
  13. description: "Repository to build and/or deploy from."
  14. )
  15. string(
  16. name: "service_update",
  17. defaultValue: "info_node info_node-api",
  18. description: "Services to update - i.e. info_node or/and info_node-api."
  19. )
  20. string(
  21. name: "mailto",
  22. defaultValue: "admin@sdsys.ru",
  23. description: "Email which has to be notified."
  24. )
  25. }
  26. stages {
  27. stage("Build") {
  28. steps {
  29. echo "Building ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}."
  30. sh "docker build --build-arg repo=${repo} --no-cache -t ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER} ."
  31. }
  32. }
  33. stage("Publish") {
  34. steps {
  35. echo "Publishing ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}"
  36. sh "docker push ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}"
  37. }
  38. }
  39. stage("Update") {
  40. when { expression { service_update != "" } }
  41. steps {
  42. script {
  43. for (String item : service_update.split()) {
  44. try{
  45. echo "Updating $item"
  46. sh "docker service update $item --image ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}"
  47. }
  48. catch(err){
  49. echo "Recovering service $item"
  50. sh "docker service rollback $item"
  51. throw err
  52. }
  53. }
  54. }
  55. }
  56. }
  57. }
  58. post {
  59. always {
  60. echo "CleaningUp work diretory"
  61. deleteDir()
  62. }
  63. failure {
  64. mail charset: 'UTF-8',
  65. subject: "Jenkins build error: ${BUILD_URL}",
  66. mimeType: 'text/html',
  67. to: "${mailto}",
  68. body: "<b>ATTENTION!!!</b> <b><br> Jenkins job failed !!!\n\n <b><br>Project Name:</b> ${env.JOB_NAME} <b><br>\nBuild Number:</b> ${env.BUILD_NUMBER} <b><br>\nStage Name:</b> Publish <b><br>\nURL Build:</b> ${env.BUILD_URL}"
  69. }
  70. success {
  71. mail charset: 'UTF-8',
  72. subject: "Jenkins build USCCESS: ${BUILD_URL}",
  73. mimeType: 'text/html',
  74. to: "${mailto}",
  75. body: "<b>Congradulations!!!</b> <b><br> Jenkins job failed !!!\n\n <b><br>Project Name:</b> ${env.JOB_NAME} <b><br>\nBuild Number:</b> ${env.BUILD_NUMBER} <b><br>\nStage Name:</b> Publish <b><br>\nURL Build:</b> ${env.BUILD_URL}"
  76. }
  77. }
  78. }