Pipeline Setup · Jenkinsfile
El pipeline declarativo que Jenkins ejecuta en cada push al repositorio. Cuatro stages validan YAML, Ansible, OpenTofu y manifiestos de Kubernetes. Si algo falla, n8n recibe una notificacion para procesarla con LLM.
Los Cuatro Stages
Cada stage valida una parte distinta del proyecto. Si un stage falla, el pipeline se detiene inmediatamente y ejecuta el bloque post para notificar a n8n.
yamllintansible-linttofu validatekubectl --dry-runEl Jenkinsfile Completo
El archivo Jenkinsfile en la raiz del repositorio define todo el pipeline. Cada stage usa container('tools') para ejecutarse dentro del contenedor del agente Kubernetes.
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: tools
image: alpine/k8s:1.29.2
command: [cat]
tty: true
"""
}
}
stages {
stage("Lint YAML") {
steps { container("tools") { sh "yamllint k3s/manifests/" } }
}
stage("Lint Ansible") {
steps { container("tools") { sh "ansible-lint ansible/" } }
}
stage("Validate OpenTofu") {
steps { container("tools") { sh "tofu validate tofu/" } }
}
stage("Validate K8s Manifests") {
steps { container("tools") { sh "kubectl --dry-run=client apply -f k3s/manifests/" } }
}
}
} Notificacion de Fallos a n8n
El bloque post con la condicion failure se ejecuta solo si el pipeline falla. Envia un webhook a n8n con los detalles del build fallido. n8n puede procesar este evento con LLM y notificar a Discord.
post {
failure {
sh """
curl -X POST http://n8n.aiops.svc.cluster.local:5678/webhook/jenkins-failure \\
-H "Content-Type: application/json" \\
-d '{"build": "${BUILD_NUMBER}", "job": "${JOB_NAME}"}'
"""
}
} Las variables BUILD_NUMBER, JOB_NAME, BUILD_DURATION y BUILD_URL son variables de entorno que Jenkins inyecta automaticamente en cada build. El webhook de n8n recibe estos datos y puede decidir si notificar a Discord, abrir un issue en GitHub o simplemente registrar el evento.
Siguiente: Jenkins vs GitHub Actions
La ultima pagina de la Fase 6 compara los dos enfoques de CI/CD y explica por que este proyecto cubre ambos deliberadamente.