En aquest tema, explorarem algunes de les eines més populars per a la Integració Contínua (CI). Aquestes eines ajuden a automatitzar el procés de construcció, prova i integració del codi, millorant així l'eficiència i la qualitat del desenvolupament de programari.
- Jenkins
Descripció
Jenkins és una eina de codi obert per a la integració contínua i el lliurament continu. És molt popular gràcies a la seva flexibilitat i la gran quantitat de plugins disponibles.
Característiques clau
- Codi obert: Gratuït i amb una gran comunitat de suport.
- Plugins: Més de 1.500 plugins disponibles per a diferents tasques.
- Pipeline as Code: Permet definir pipelines utilitzant codi (Jenkinsfile).
- Integració amb altres eines: Compatible amb Git, Maven, Docker, etc.
Exemple de configuració bàsica
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandes per construir el projecte } } stage('Test') { steps { echo 'Testing...' // Comandes per executar les proves } } stage('Deploy') { steps { echo 'Deploying...' // Comandes per desplegar l'aplicació } } } }
Exercici
- Configura un pipeline bàsic en Jenkins que construeixi, provi i desplegui una aplicació simple.
- Travis CI
Descripció
Travis CI és una eina de CI basada en el núvol que s'integra fàcilment amb GitHub. És coneguda per la seva simplicitat i facilitat d'ús.
Característiques clau
- Integració amb GitHub: S'integra directament amb els repositoris de GitHub.
- Configuració senzilla: Utilitza un fitxer
.travis.yml
per definir el pipeline. - Suport per a múltiples llenguatges: Compatible amb diversos llenguatges de programació.
Exemple de configuració bàsica
Exercici
- Crea un fitxer
.travis.yml
per a un projecte Java que utilitzi Gradle per construir i provar l'aplicació.
- CircleCI
Descripció
CircleCI és una altra eina de CI basada en el núvol que ofereix una gran flexibilitat i potència. És coneguda per la seva velocitat i eficiència.
Característiques clau
- Configuració YAML: Utilitza un fitxer
config.yml
per definir el pipeline. - Integració amb GitHub i Bitbucket: Compatible amb aquests serveis de control de versions.
- Execució paral·lela: Permet executar tasques en paral·lel per reduir el temps de construcció.
Exemple de configuració bàsica
version: 2.1 jobs: build: docker: - image: circleci/openjdk:11-jdk steps: - checkout - run: ./gradlew build
Exercici
- Configura un pipeline en CircleCI per a un projecte Java que utilitzi Gradle.
- GitLab CI
Descripció
GitLab CI és una eina de CI/CD integrada directament en GitLab. Ofereix una solució completa per a la integració i el lliurament continus.
Característiques clau
- Integració nativa: Integrat directament en GitLab.
- Configuració YAML: Utilitza un fitxer
.gitlab-ci.yml
per definir el pipeline. - Suport per a Docker: Permet utilitzar contenidors Docker per a les tasques de construcció i prova.
Exemple de configuració bàsica
stages: - build - test - deploy build: stage: build script: - ./gradlew build test: stage: test script: - ./gradlew test deploy: stage: deploy script: - ./gradlew deploy
Exercici
- Crea un fitxer
.gitlab-ci.yml
per a un projecte Java que utilitzi Gradle per construir, provar i desplegar l'aplicació.
- Bamboo
Descripció
Bamboo és una eina de CI/CD desenvolupada per Atlassian. És coneguda per la seva integració amb altres eines d'Atlassian com Jira i Bitbucket.
Característiques clau
- Integració amb Atlassian: Compatible amb Jira, Bitbucket, etc.
- Configuració visual: Permet definir pipelines utilitzant una interfície gràfica.
- Suport per a múltiples llenguatges: Compatible amb diversos llenguatges de programació.
Exemple de configuració bàsica
- Nota: Bamboo no utilitza fitxers de configuració com altres eines. La configuració es fa a través de la interfície gràfica.
Exercici
- Configura un pipeline en Bamboo per a un projecte Java que utilitzi Maven per construir i provar l'aplicació.
Conclusió
En aquesta secció hem explorat algunes de les eines més populars per a la integració contínua, incloent Jenkins, Travis CI, CircleCI, GitLab CI i Bamboo. Cada eina té les seves pròpies característiques i avantatges, i la selecció de l'eina adequada dependrà de les necessitats específiques del teu projecte i equip.
Resum
- Jenkins: Flexible i extensible amb una gran quantitat de plugins.
- Travis CI: Senzill i fàcil d'utilitzar, especialment amb GitHub.
- CircleCI: Ràpid i eficient amb suport per a execució paral·lela.
- GitLab CI: Integració nativa amb GitLab i suport per a Docker.
- Bamboo: Integració amb altres eines d'Atlassian i configuració visual.
Amb aquests coneixements, estàs preparat per configurar pipelines de CI utilitzant l'eina que millor s'adapti a les teves necessitats.
Curs de DevOps Bàsic
Mòdul 1: Introducció a DevOps
- Què és DevOps?
- Història i evolució de DevOps
- Principis i beneficis de DevOps
- Cultura i mentalitat DevOps
Mòdul 2: Fonaments d'Integració Contínua (CI)
- Conceptes bàsics de CI
- Eines populars de CI
- Configuració d'un pipeline de CI
- Proves automatitzades en CI
Mòdul 3: Fonaments de Lliurament Continu (CD)
- Conceptes bàsics de CD
- Diferències entre CI i CD
- Eines populars de CD
- Configuració d'un pipeline de CD
Mòdul 4: Automatització de Desplegaments
- Introducció a l'automatització de desplegaments
- Eines d'automatització de desplegaments
- Desplegament continu (CD) vs. Lliurament continu (CD)
- Pràctiques recomanades per a l'automatització de desplegaments
Mòdul 5: Col·laboració entre Desenvolupament i Operacions
- Comunicació i col·laboració en equips DevOps
- Eines de col·laboració i gestió de projectes
- Integració de feedback continu
- Casos d'estudi i exemples d'èxit
Mòdul 6: Exercicis Pràctics i Projectes
- Configuració d'un entorn de CI/CD
- Automatització d'un pipeline de desplegament
- Implementació de proves automatitzades
- Projecte final: Implementació completa de CI/CD