Objectiu del Projecte
L'objectiu d'aquest projecte final és aplicar tots els coneixements adquirits al llarg del curs per configurar i implementar un pipeline complet de CI/CD. Aquest projecte inclou la configuració d'un entorn de desenvolupament, la integració contínua, el lliurament continu i l'automatització de desplegaments. Al final del projecte, hauràs creat un pipeline funcional que automatitza tot el procés des del codi fins a la producció.
Requisits del Projecte
Abans de començar, assegura't de tenir els següents requisits:
- Un repositori de codi font (per exemple, GitHub, GitLab).
- Accés a una eina de CI/CD (per exemple, Jenkins, GitLab CI, CircleCI).
- Un entorn de desplegament (per exemple, un servidor de proves o un servei de núvol com AWS, Azure o GCP).
- Coneixement bàsic de scripts de shell i configuració de servidors.
Passos del Projecte
- Configuració del Repositori de Codi
- Crea un repositori nou en la teva plataforma de control de versions preferida (GitHub, GitLab, etc.).
- Afegeix el codi font del teu projecte al repositori. Pots utilitzar un projecte existent o crear un projecte nou.
- Configura les branques. Per a aquest projecte, utilitzarem dues branques principals:
main
(producció) idevelop
(desenvolupament).
- Configuració del Pipeline de CI
- Selecciona una eina de CI. Per a aquest exemple, utilitzarem Jenkins.
- Instal·la Jenkins en el teu servidor o utilitza una instància de Jenkins en el núvol.
- Crea un nou treball (job) en Jenkins per al teu projecte.
- Configura el treball per executar-se automàticament quan hi hagi canvis en la branca
develop
. - Afegeix passos de construcció per compilar el codi, executar proves unitàries i generar artefactes (per exemple, fitxers .jar, .war, etc.).
Exemple de Configuració de Jenkinsfile
pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean install' } } stage('Test') { steps { sh 'mvn test' } } stage('Package') { steps { sh 'mvn package' } } } post { always { junit '**/target/surefire-reports/*.xml' archiveArtifacts artifacts: '**/target/*.jar', allowEmptyArchive: true } } }
- Configuració del Pipeline de CD
- Configura un entorn de desplegament. Això pot ser un servidor de proves o un servei de núvol.
- Afegeix un nou treball (job) en Jenkins per al desplegament.
- Configura el treball per executar-se automàticament quan hi hagi canvis en la branca
main
. - Afegeix passos de desplegament per transferir els artefactes generats al servidor de producció i iniciar l'aplicació.
Exemple de Configuració de Desplegament en Jenkinsfile
pipeline { agent any stages { stage('Deploy') { steps { sshagent(['deploy-key']) { sh 'scp target/*.jar user@server:/path/to/deploy' sh 'ssh user@server "cd /path/to/deploy && java -jar *.jar"' } } } } }
- Automatització de Proves
- Afegeix proves automatitzades al teu projecte. Això pot incloure proves unitàries, proves d'integració i proves de sistema.
- Configura el pipeline de CI per executar aquestes proves automàticament després de cada construcció.
- Validació i Proves Finals
- Realitza canvis en la branca
develop
i verifica que el pipeline de CI s'executa correctament. - Fusiona els canvis a la branca
main
i verifica que el pipeline de CD s'executa correctament. - Prova l'aplicació en l'entorn de producció per assegurar-te que tot funciona com s'espera.
Exercici Pràctic
- Configura un pipeline complet de CI/CD per al teu projecte seguint els passos anteriors.
- Documenta el procés i els resultats obtinguts.
- Presenta el teu projecte amb una demostració del pipeline en funcionament.
Solució Exemple
Documentació del Procés
- Repositori de Codi: Enllaç al repositori
- Pipeline de CI: Configurat amb Jenkins, inclou passos de construcció, proves i empaquetat.
- Pipeline de CD: Configurat amb Jenkins, inclou passos de desplegament al servidor de producció.
- Proves Automatitzades: Inclou proves unitàries i d'integració.
Resultats Obtinguts
- Pipeline de CI: S'executa correctament després de cada canvi en la branca
develop
. - Pipeline de CD: S'executa correctament després de cada canvi en la branca
main
. - Aplicació en Producció: Funciona correctament després del desplegament automatitzat.
Conclusió
En aquest projecte final, has aplicat tots els conceptes i habilitats apresos al llarg del curs per configurar i implementar un pipeline complet de CI/CD. Aquest projecte t'ha permès veure com totes les peces encaixen juntes per automatitzar el procés de desenvolupament i desplegament, millorant així l'eficiència i la qualitat del teu treball.
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