| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- pipeline {
- options {
- ansiColor('xterm')
- }
- agent {
- kubernetes {
- yamlFile 'builder.yaml'
- }
- }
-
- // Definición de variables de entorno
- environment {
- NOMBRE_APP = 'finanzas'
- }
- // Definición de parámetros
- parameters {
- booleanParam(name: 'install', description: 'Instalar todo', defaultValue: false)
- booleanParam(name: 'clean', description: 'Borrar todo', defaultValue: false)
- booleanParam(name: 'claims', description: 'Crea PVC', defaultValue: false)
- booleanParam(name: 'borraclaims', description: 'Borra PVC', defaultValue: false)
- booleanParam(name: 'namespace', description: 'Crea namespace', defaultValue: false)
- booleanParam(name: 'borranamespace', description: 'Borra namespace', defaultValue: false)
- }
-
- stages {
- stage('Crea las PVC') {
- when {
- expression { params.claims}
- }
- steps {
- echo "Creando las PVC..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'kubectl create -f K8S/pvc-${NOMBRE_APP}.yaml'
- sh 'kubectl create -f K8S/pvc-static.yaml'
- sh 'kubectl create -f K8S/pvc-postgresql.yaml'
- }
- }
- }
- }
- stage('Borra las PVC') {
- when {
- expression { params.borraclaims}
- }
- steps {
- echo "Borrando las PVC..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'sh K8S/patchPVC.sh||true'
- sh 'kubectl delete -f K8S/pvc-${NOMBRE_APP}.yaml||true'
- sh 'kubectl delete -f K8S/pvc-static.yaml||true'
- sh 'kubectl delete -f K8S/pvc-postgresql.yaml||true'
- }
- }
- }
- }
- stage('Borra todo') {
- when {
- expression { params.clean }
- }
- steps {
- echo "Borrando todo..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'kubectl delete -f K8S/db-deployment.yaml||true'
- sh 'kubectl delete -f K8S/db-service.yaml||true'
- sh 'kubectl delete -f K8S/${NOMBRE_APP}-deployment.yaml||true'
- sh 'kubectl delete -f K8S/${NOMBRE_APP}-ingress.yaml||true'
- sh 'kubectl delete -f K8S/reg-secret.yaml||true'
- sh 'kubectl delete -f K8S/env-prod-configmap.yaml||true'
- sh 'kubectl delete -f K8S/env-prod-db-configmap.yaml||true'
- }
- }
- }
- }
- stage('Borra namespace') {
- when {
- expression { params.borranamespace }
- }
- steps {
- echo "Borrando namespace..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'kubectl delete -f K8S/namespace.yaml||true'
- }
- }
- }
- }
- stage('Crea namespace') {
- when {
- expression { params.namespace }
- }
- steps {
- echo "Creando namespace..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'kubectl apply -f K8S/namespace.yaml'
- }
- }
- }
- }
- stage('Construir image y subirla al registry con Kaniko') {
- when {
- allOf {
- expression { !params.clean }
- expression { !params.namespace }
- expression { !params.borranamespace }
- expression { !params.claims }
- expression { !params.borraclaims }
- }
- }
- steps {
- container('kaniko') {
- script {
- sh '''
- /kaniko/executor --dockerfile `pwd`/Dockerfile \
- --context `pwd` \
- --destination=registry.reymota.es/${NOMBRE_APP}:${BUILD_NUMBER}
- '''
- }
- }
- }
- }
- stage('Instala todo') {
- when {
- expression { params.install }
- }
- steps {
- echo "Creando todo..."
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'kubectl create -f K8S/reg-secret.yaml'
- sh 'kubectl create -f K8S/env-prod-configmap.yaml'
- sh 'kubectl create -f K8S/env-prod-db-configmap.yaml'
- sh 'kubectl create -f K8S/db-deployment.yaml'
- sh 'kubectl create -f K8S/db-service.yaml'
- sh 'sed -i "s/<TAG>/${BUILD_NUMBER}/" K8S/${NOMBRE_APP}-deployment.yaml'
- sh 'kubectl apply -f K8S/${NOMBRE_APP}-deployment.yaml'
- sh 'kubectl create -f K8S/${NOMBRE_APP}-ingress.yaml'
- }
- }
- }
- }
- stage('Despliega la aplicación en Kubernetes') {
- when {
- allOf {
- expression { !params.clean }
- expression { !params.namespace }
- expression { !params.borranamespace }
- expression { !params.claims }
- expression { !params.borraclaims }
- expression { !params.install }
- }
- }
- steps {
- echo "Desplegando la aplicación"
- container('kubectl') {
- withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
- sh 'sed -i "s/<TAG>/${BUILD_NUMBER}/" K8S/${NOMBRE_APP}-deployment.yaml'
- sh 'kubectl delete -f K8S/${NOMBRE_APP}-deployment.yaml || true'
- sh 'kubectl apply -f K8S/${NOMBRE_APP}-deployment.yaml'
- }
- }
- }
- }
- }
- /*
- post {
- always {
- mail to: 'creylopez@yahoo.es',
- subject: "Trabajo ${currentBuild.fullDisplayName}",
- 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.",
- mimeType: 'text/html'
- }
- failure {
- mail to: 'creylopez@yahoo.es',
- subject: "El trabajo ${currentBuild.fullDisplayName} ha fallado",
- body: "El trabajo ha <b>FALLADO</b>: Comprueba la salida de consola en ${env.BUILD_URL} para ver los resultados.",
- mimeType: 'text/html'
- }
- unstable {
- echo 'El trabajo ${currentBuild.fullDisplayName} ha sido marcado como inestable'
- }
- changed {
- mail bcc: '',
- body: "El estado del trabajo '${currentBuild.fullDisplayName}' ha cambiado",
- from: '',
- replyTo: '',
- subject: "El estado del trabajo ha cambiado",
- to: 'creylopez@yahoo.es',
- mimeType: 'text/html'
- }
- }
- */
- }
|