En aquesta secció, aprendrem a configurar un entorn de CI/CD (Integració Contínua / Lliurament Continu) des de zero. Aquest procés inclou la instal·lació i configuració de les eines necessàries, la creació de pipelines bàsics i la integració de proves automatitzades.
Objectius d'Aprenentatge
- Entendre els components clau d'un entorn de CI/CD.
- Instal·lar i configurar eines de CI/CD.
- Crear un pipeline bàsic de CI/CD.
- Integrar proves automatitzades en el pipeline.
Components Clau d'un Entorn de CI/CD
Un entorn de CI/CD típicament inclou els següents components:
- Sistema de Control de Versions (VCS): Git, SVN, etc.
- Servidor d'Integració Contínua: Jenkins, GitLab CI, Travis CI, CircleCI, etc.
- Repositori d'Artifcats: Nexus, Artifactory, etc.
- Entorn de Proves: JUnit, Selenium, etc.
- Entorn de Desplegament: Kubernetes, Docker, etc.
Instal·lació i Configuració d'Eines de CI/CD
Pas 1: Instal·lació de Git
Git és un sistema de control de versions distribuït que permet als desenvolupadors col·laborar en el codi font.
# Per a sistemes basats en Debian/Ubuntu sudo apt update sudo apt install git # Per a sistemes basats en Red Hat/CentOS sudo yum install git
Pas 2: Instal·lació de Jenkins
Jenkins és una eina d'integració contínua de codi obert que automatitza parts del procés de desenvolupament de programari.
# Per a sistemes basats en Debian/Ubuntu wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update sudo apt install jenkins # Per a sistemes basats en Red Hat/CentOS sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key sudo yum install jenkins
Pas 3: Configuració de Jenkins
-
Iniciar Jenkins:
sudo systemctl start jenkins sudo systemctl enable jenkins
-
Accedir a la interfície web de Jenkins:
- Obre un navegador web i navega a
http://localhost:8080
. - Introdueix la contrasenya inicial que es troba en
/var/lib/jenkins/secrets/initialAdminPassword
.
- Obre un navegador web i navega a
-
Instal·lar plugins essencials:
- Recomanem instal·lar els plugins suggerits durant la configuració inicial.
Pas 4: Creació d'un Pipeline Bàsic de CI/CD
Exemple de Pipeline amb Jenkinsfile
Un Jenkinsfile
és un fitxer que defineix el pipeline de Jenkins utilitzant la sintaxi de pipeline de Jenkins.
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandes per compilar el projecte } } stage('Test') { steps { echo 'Testing...' // Comandes per executar les proves } } stage('Deploy') { steps { echo 'Deploying...' // Comandes per desplegar l'aplicació } } } }
Pas 5: Integració de Proves Automatitzades
Les proves automatitzades són essencials per garantir la qualitat del codi. A continuació, es mostra un exemple d'integració de proves amb JUnit en un projecte Java.
Exemple de Proves amb JUnit
import org.junit.Test; import static org.junit.Assert.assertEquals; public class ExampleTest { @Test public void testAddition() { assertEquals(2, 1 + 1); } }
Exercici Pràctic
Objectiu
Configurar un entorn de CI/CD utilitzant Jenkins i Git, i crear un pipeline bàsic que inclogui una etapa de construcció, una de proves i una de desplegament.
Passos
- Instal·la Git i Jenkins seguint les instruccions anteriors.
- Crea un repositori Git per al teu projecte.
- Configura un nou treball (job) a Jenkins que utilitzi el teu repositori Git.
- Defineix un
Jenkinsfile
que inclogui les etapes de construcció, proves i desplegament. - Executa el pipeline i verifica que totes les etapes es completen correctament.
Solució
-
Instal·lació de Git i Jenkins: Segueix els passos descrits anteriorment.
-
Creació del repositori Git:
git init my-project cd my-project touch Jenkinsfile git add . git commit -m "Initial commit" git remote add origin <URL_DEL_REPOSITORI> git push -u origin master
-
Configuració del treball a Jenkins:
- Crea un nou treball de pipeline.
- Configura el treball per utilitzar el repositori Git.
- Afegeix el següent
Jenkinsfile
al teu projecte:
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandes per compilar el projecte } } stage('Test') { steps { echo 'Testing...' // Comandes per executar les proves } } stage('Deploy') { steps { echo 'Deploying...' // Comandes per desplegar l'aplicació } } } }
-
Executa el pipeline: Navega a la pàgina del treball a Jenkins i fes clic a "Build Now". Verifica que totes les etapes es completen correctament.
Conclusió
En aquesta secció, hem après a configurar un entorn de CI/CD bàsic utilitzant Git i Jenkins. Hem creat un pipeline simple que inclou etapes de construcció, proves i desplegament, i hem integrat proves automatitzades per garantir la qualitat del codi. Aquest és un primer pas fonamental per implementar pràctiques DevOps en el teu flux de treball de desenvolupament.
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