Jenkinsfile 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. pipeline {
  2. options {
  3. ansiColor('xterm')
  4. }
  5. agent {
  6. kubernetes {
  7. yamlFile 'builder.yaml'
  8. }
  9. }
  10. parameters {
  11. booleanParam(name: 'install', description: 'Instalar todo', defaultValue: false)
  12. booleanParam(name: 'clean', description: 'Borrar todo', defaultValue: false)
  13. booleanParam(name: 'claims', description: 'Crea PVC', defaultValue: false)
  14. booleanParam(name: 'borraclaims', description: 'Borra PVC', defaultValue: false)
  15. }
  16. stages {
  17. stage('Crea las PVC') {
  18. when {
  19. expression { params.claims}
  20. }
  21. steps {
  22. echo "Creando las PVC..."
  23. container('kubectl') {
  24. withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) {
  25. sh 'kubectl create -f K8S/pvc-jugaralpadel.yaml'
  26. sh 'kubectl create -f K8S/pvc-static.yaml'
  27. sh 'kubectl create -f K8S/pvc-postgresql.yaml'
  28. }
  29. }
  30. }
  31. }
  32. stage('Borra las PVC') {
  33. when {
  34. expression { params.borraclaims}
  35. }
  36. steps {
  37. echo "Borrando las PVC..."
  38. container('kubectl') {
  39. withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) {
  40. sh 'kubectl delete -f K8S/pvc-jugaralpadel.yaml||true'
  41. sh 'kubectl delete -f K8S/pvc-static.yaml||true'
  42. sh 'kubectl delete -f K8S/pvc-postgresql.yaml||true'
  43. }
  44. }
  45. }
  46. }
  47. stage('Borra todo') {
  48. when {
  49. expression { params.clean }
  50. }
  51. steps {
  52. echo "Borrando todo..."
  53. container('kubectl') {
  54. withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) {
  55. sh 'kubectl delete -f K8S/db-deployment.yaml||true'
  56. sh 'kubectl delete -f K8S/db-service.yaml||true'
  57. sh 'kubectl delete -f K8S/jugaralpadel-jenkins-deployment.yaml||true'
  58. sh 'kubectl delete -f K8S/jugaralpadel-ingress.yaml||true'
  59. sh 'kubectl delete -f K8S/reg-secret.yaml||true'
  60. sh 'kubectl delete -f K8S/env-prod-configmap.yaml||true'
  61. sh 'kubectl delete -f K8S/env-prod-db-configmap.yaml||true'
  62. sh 'kubectl delete -f K8S/namespace.yaml||true'
  63. }
  64. }
  65. }
  66. }
  67. stage('Kaniko Build & Push Image') {
  68. when {
  69. expression { !params.clean }
  70. }
  71. steps {
  72. container('kaniko') {
  73. script {
  74. sh '''
  75. /kaniko/executor --dockerfile `pwd`/Dockerfile \
  76. --context `pwd` \
  77. --destination=registry.reymota.es/jugaralpadel:${BUILD_NUMBER}
  78. '''
  79. }
  80. }
  81. }
  82. }
  83. stage('Instala todo') {
  84. when {
  85. expression { params.install }
  86. }
  87. steps {
  88. echo "Creando todo..."
  89. container('kubectl') {
  90. withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) {
  91. sh 'kubectl apply -f K8S/namespace.yaml'
  92. sh 'kubectl create -f K8S/reg-secret.yaml'
  93. sh 'kubectl create -f K8S/env-prod-configmap.yaml'
  94. sh 'kubectl create -f K8S/env-prod-db-configmap.yaml'
  95. sh 'kubectl create -f K8S/db-deployment.yaml'
  96. sh 'kubectl create -f K8S/db-service.yaml'
  97. sh 'kubectl apply -f K8S/jugaralpadel-jenkins-deployment.yaml'
  98. sh 'kubectl create -f K8S/jugaralpadel-ingress.yaml'
  99. }
  100. }
  101. }
  102. }
  103. stage('Deploy App to Kubernetes') {
  104. when {
  105. expression { !params.clean }
  106. }
  107. steps {
  108. echo "Desplegando la aplicación"
  109. container('kubectl') {
  110. withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) {
  111. sh 'sed -i "s/<TAG>/${BUILD_NUMBER}/" K8S/jugaralpadel-jenkins-deployment.yaml'
  112. sh 'kubectl delete -f K8S/jugaralpadel-jenkins-deployment.yaml || true'
  113. sh 'kubectl apply -f K8S/jugaralpadel-jenkins-deployment.yaml'
  114. }
  115. }
  116. }
  117. }
  118. }
  119. post {
  120. always {
  121. mail to: 'creylopez@yahoo.es',
  122. subject: "Trabajo ${currentBuild.fullDisplayName}",
  123. body: "El resultado del trabajo '${currentBuild.fullDisplayName}' ha sido <b>${currentBuild.result}</b>: Comprueba la salida de consola en ${env.BUILD_URL} para ver los resultados.",
  124. mimeType: 'text/html'
  125. }
  126. failure {
  127. mail to: 'creylopez@yahoo.es',
  128. subject: "El trabajo ${currentBuild.fullDisplayName} ha fallado",
  129. body: "El trabajo ha <b>FALLADO</b>: Comprueba la salida de consola en ${env.BUILD_URL} para ver los resultados.",
  130. mimeType: 'text/html'
  131. }
  132. unstable {
  133. echo 'El trabajo ${currentBuild.fullDisplayName} ha sido marcado como inestable'
  134. }
  135. changed {
  136. mail bcc: '',
  137. body: "El estado del trabajo '${currentBuild.fullDisplayName}' ha cambiado",
  138. from: '',
  139. replyTo: '',
  140. subject: "El estado del trabajo ha cambiado",
  141. to: 'creylopez@yahoo.es',
  142. mimeType: 'text/html'
  143. }
  144. }
  145. }