En aquest tema, aprendrem a configurar un entorn d'Integració Contínua (CI). La configuració d'un entorn de CI és un pas crucial per automatitzar la construcció, les proves i la integració del codi. Aquest procés assegura que els canvis en el codi es validin contínuament, reduint els errors i millorant la qualitat del programari.
Objectius
- Entendre els components bàsics d'un entorn de CI.
- Aprendre a configurar un servidor de CI.
- Integrar el servidor de CI amb un sistema de control de versions.
- Automatitzar la construcció i les proves del codi.
Components Bàsics d'un Entorn de CI
- Servidor de CI: És el component central que gestiona i executa les tasques d'integració contínua.
- Sistema de Control de Versions (VCS): Emmagatzema el codi font i permet la col·laboració entre desenvolupadors.
- Scripts de Construcció: Defineixen com construir i empaquetar el codi.
- Scripts de Proves: Defineixen com executar les proves automatitzades.
- Entorn d'Execució: On es desplega i s'executa el codi per a les proves.
Passos per Configurar un Entorn de CI
- Selecció del Servidor de CI
Hi ha diverses eines populars per configurar un servidor de CI. Algunes de les més utilitzades són:
- Jenkins
- GitLab CI/CD
- CircleCI
- Travis CI
- Instal·lació del Servidor de CI
Exemple: Instal·lació de Jenkins
-
Descàrrega i Instal·lació:
- Descarrega Jenkins des del lloc oficial.
- Instal·la Jenkins seguint les instruccions per al teu sistema operatiu.
-
Configuració Inicial:
- Accedeix a Jenkins a través del navegador (
http://localhost:8080
). - Introdueix la contrasenya inicial que es troba al fitxer
initialAdminPassword
. - Instal·la els plugins recomanats durant la configuració inicial.
- Accedeix a Jenkins a través del navegador (
- Integració amb el Sistema de Control de Versions
Exemple: Integració amb GitHub
-
Configuració del Repositori:
- Crea un repositori a GitHub o utilitza un repositori existent.
- Afegeix Jenkins com a usuari col·laborador al repositori.
-
Configuració de Jenkins:
- A Jenkins, crea un nou projecte de tipus "Freestyle".
- A la secció "Source Code Management", selecciona "Git" i introdueix l'URL del repositori de GitHub.
- Configura les credencials d'accés a GitHub.
- Automatització de la Construcció
Exemple: Script de Construcció amb Maven
-
Configuració del Script de Construcció:
- Afegeix un fitxer
pom.xml
al teu projecte amb la configuració de Maven. - Defineix les dependències i els plugins necessaris per a la construcció del projecte.
- Afegeix un fitxer
-
Configuració de Jenkins:
- A la secció "Build" del projecte a Jenkins, afegeix un pas de construcció de tipus "Invoke top-level Maven targets".
- Especifica els objectius de Maven, per exemple,
clean install
.
- Automatització de les Proves
Exemple: Script de Proves amb JUnit
-
Configuració del Script de Proves:
- Afegeix les dependències de JUnit al fitxer
pom.xml
. - Escriu les proves unitàries utilitzant JUnit.
- Afegeix les dependències de JUnit al fitxer
-
Configuració de Jenkins:
- A la secció "Post-build Actions" del projecte a Jenkins, afegeix una acció de tipus "Publish JUnit test result report".
- Especifica el patró dels fitxers de resultats de les proves, per exemple,
**/target/surefire-reports/*.xml
.
Exemple Pràctic
A continuació, es mostra un exemple pràctic de configuració d'un entorn de CI amb Jenkins i GitHub:
Pas 1: Crear un Repositori a GitHub
- Crea un nou repositori a GitHub anomenat
example-ci-project
. - Clona el repositori al teu ordinador local.
Pas 2: Configurar el Projecte Maven
- Afegeix un fitxer
pom.xml
al directori del projecte:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>example-ci-project</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
- Afegeix una classe de prova JUnit:
package com.example; import org.junit.Test; import static org.junit.Assert.assertTrue; public class ExampleTest { @Test public void testExample() { assertTrue(true); } }
- Puja els canvis al repositori de GitHub:
Pas 3: Configurar Jenkins
- Crea un nou projecte de tipus "Freestyle" a Jenkins anomenat
example-ci-project
. - A la secció "Source Code Management", selecciona "Git" i introdueix l'URL del repositori de GitHub.
- A la secció "Build", afegeix un pas de construcció de tipus "Invoke top-level Maven targets" i especifica
clean install
. - A la secció "Post-build Actions", afegeix una acció de tipus "Publish JUnit test result report" i especifica
**/target/surefire-reports/*.xml
.
Pas 4: Executar el Pipeline
- Desa la configuració del projecte a Jenkins.
- Executa el pipeline manualment per verificar que tot està configurat correctament.
- Revisa els resultats de la construcció i les proves a la interfície de Jenkins.
Resum
En aquesta secció, hem après a configurar un entorn de CI utilitzant Jenkins i GitHub. Hem vist com instal·lar Jenkins, integrar-lo amb un sistema de control de versions, automatitzar la construcció del codi amb Maven i executar proves automatitzades amb JUnit. Aquesta configuració bàsica és el primer pas per implementar un procés d'integració contínua efectiu en els teus projectes de programari.
Curs de CI/CD: Integració i Desplegament Continu
Mòdul 1: Introducció a CI/CD
Mòdul 2: Integració Contínua (CI)
- Introducció a la Integració Contínua
- Configuració d'un Entorn de CI
- Automatització de la Construcció
- Proves Automatitzades
- Integració amb Control de Versions
Mòdul 3: Desplegament Continu (CD)
- Introducció al Desplegament Continu
- Automatització del Desplegament
- Estratègies de Desplegament
- Monitoratge i Retroalimentació
Mòdul 4: Pràctiques Avançades de CI/CD
Mòdul 5: Implementació de CI/CD en Projectes Reals
Mòdul 6: Eines i Tecnologies
Mòdul 7: Exercicis Pràctics
- Exercici 1: Configuració d'un Pipeline Bàsic
- Exercici 2: Integració de Proves Automatitzades
- Exercici 3: Desplegament en un Entorn de Producció
- Exercici 4: Monitoratge i Retroalimentació