Jenkinsfile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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: "surkov.v@sdsys.ru",
  23. description: "Email which has to be notified."
  24. )
  25. }
  26. stages {
  27. stage("Build") {
  28. steps {
  29. sh "echo docker build --build-arg repo=${repo} --no-cache -t ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER} ."
  30. }
  31. }
  32. stage("Publish") {
  33. steps {
  34. sh "echo docker push ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}"
  35. }
  36. }
  37. stage("Update") {
  38. when { expression { service_update != "" } }
  39. steps {
  40. script {
  41. for (String item : service_update.split()) {
  42. try{
  43. echo "Updating $item"
  44. sh "docker service update $item --image ${docker_registry}/${docker_image}:${repo}-${BUILD_NUMBER}"
  45. }
  46. catch(err){
  47. echo "Recovering service $item"
  48. sh "docker service rollback $item"
  49. throw err
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }
  56. post {
  57. always {
  58. echo "CleaningUp work diretory"
  59. deleteDir()
  60. }
  61. failure {
  62. mail charset: 'UTF-8',
  63. subject: "Jenkins build error: ${BUILD_URL}",
  64. to: "${mailto}"
  65. 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}"
  66. }
  67. success {
  68. mail charset: 'UTF-8',
  69. subject: "Jenkins build USCCESS: ${BUILD_URL}",
  70. to: "${mailto}"
  71. 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}"
  72. }
  73. }
  74. }