Slide 1

Slide 1 text

CI/CD de Aplicaciones Spring Boot con Jenkins-X Eddú Meléndez Gonzales @eddumelendez

Slide 2

Slide 2 text

Quién soy? - Ingeniero de Software - Co-organizador en las comunidades de Java, Jenkins, Cloud Native - Miembro Asociado del Java Community Process (JCP) - Contribuyente de Proyectos Open Source (spring-boot, spring-security, spring-framework, spring-session, spring-ldap, spring-cloud-contract, arquillian-cube, mvc 1.0) - Contribuyente #10 en spring boot - Autor de Spring Boot Mybatis Starter

Slide 3

Slide 3 text

“Integración Continua es una práctica de desarrollo de software donde los miembros de un equipo integran su trabajo frecuentemente, usualmente cada persona integra por lo menos diariamente - llevando a múltiples integraciones por día. Cada integración es verificada por una construcción automática (incluyendo pruebas) para detectar errores de integración lo más pronto posible. “ Martin Fowler Continuous Integration (CI)

Slide 4

Slide 4 text

Continuous Delivery (CD) “Entrega Continua es una disciplina del desarrollo de software donde se construye software de forma que el software puede ser liberado a producción en cualquier momento.” Martin Fowler

Slide 5

Slide 5 text

Continuous Deployment (CD) “Despliegue Continuo significa que cada cambio pasa por un pipeline y automáticamente se pone en producción, terminando en varios despliegues en producción cada día.” Martin Fowler

Slide 6

Slide 6 text

Continuous Delivery vs Continuous Deployment

Slide 7

Slide 7 text

Tendencias Tecnológicas ● Spring Boot ● Docker ● Kubernetes ● Istio

Slide 8

Slide 8 text

Qué es Jenkins? ● Fork de Hudson ● Herramienta de Integración Continua ● Escrito en Java ● Creado por Kohsuke Kawaguchi

Slide 9

Slide 9 text

Por qué Jenkins X?

Slide 10

Slide 10 text

Por que Jenkins X?

Slide 11

Slide 11 text

Qué es Jenkins X? Plataforma para proveer Jenkins como solución CI/CD sobre Kubernetes.

Slide 12

Slide 12 text

Funcionalidades ● Command Line ● Pipelines ● Environment ● Promotion ● Preview Environments ● Feedback ● Applications ● Addons

Slide 13

Slide 13 text

GitOps

Slide 14

Slide 14 text

Estado actual: ● OS: mac, linux ● Cloud Providers: AWS, Azure, GKE, Minikube, Minishift, OpenShift ● Tools: Helm, Skaffold, Argo ● Git Providers: GitHub, GitHub Enterprise, Bitbucket Cloud ● Issue Trackers: GitHub, GitHub Enterprise, JIRA ● Repositories: Chart Museum, Docker Repository, Nexus ● Build Packs: Go, Java + Maven, Java + Gradle, Node, Rust

Slide 15

Slide 15 text

Creación de un cluster jx create cluster gke --batch-mode --project-id jenkins-x-demo \ --cluster-name my-jenkins-x --zone us-west1-b --machine-type n1-standard-2 \ --min-num-nodes 3 --max-num-nodes 4 --default-admin-password mypassword \ --git-provider-url https://github.com --git-username myuser --git-api-token api-token --kubernetes-version 1.10

Slide 16

Slide 16 text

Manejo de aplicaciones ● Listar jx get applications ● Crear aplicación spring boot jx create spring -d web -d actuator

Slide 17

Slide 17 text

Manejo de ambientes ● Listar jx get environments ● Crear ambientes jx create env --name qa --label QA --namespace test --prefix batfire

Slide 18

Slide 18 text

Promociones jx promote --version v0.0.3 --env production

Slide 19

Slide 19 text

Hora del show!!!

Slide 20

Slide 20 text

Roadmap ● OS: windows ● Cloud Providers: Digital Ocean, EKS, IBM Cloud, PKS ● Tools: Prow, LetsEncrypt, Argo ● Git Providers: Gitea, Bitbucket Server, GitLab ● Issue Trackers: Gitea ● Repositories: Artifactory ● Build Packs: Kubeless, Python, Serverless, Swift, .Net

Slide 21

Slide 21 text

Gracias! Twitter: @eddumelendez GitHub: github.com/eddumelendez