Introducció
Jenkins és una eina d'integració contínua (CI) i lliurament continu (CD) de codi obert que ajuda a automatitzar parts del procés de desenvolupament de programari. És àmpliament utilitzat per desenvolupar, provar i desplegar aplicacions de manera eficient i consistent.
Característiques Clau de Jenkins
- Automatització: Jenkins permet automatitzar tasques repetitives com la compilació, prova i desplegament de codi.
 - Extensibilitat: Amb una gran quantitat de plugins disponibles, Jenkins es pot integrar amb gairebé qualsevol eina de desenvolupament.
 - Facilitat d'ús: Ofereix una interfície web intuïtiva que facilita la configuració i gestió de feines.
 - Comunitat Activa: Com a projecte de codi obert, té una comunitat activa que contribueix amb plugins, documentació i suport.
 
Per què Utilitzar Jenkins?
Beneficis de Jenkins
- 
Integració Contínua (CI):
- Automatitza la integració de canvis de codi de múltiples desenvolupadors en un projecte compartit.
 - Detecta errors de manera primerenca, reduint el temps de resolució de problemes.
 
 - 
Lliurament Continu (CD):
- Facilita la distribució freqüent i fiable del programari.
 - Permet desplegar aplicacions en diferents entorns de manera automàtica.
 
 - 
Flexibilitat i Extensibilitat:
- Suporta una àmplia gamma de llenguatges de programació i plataformes.
 - Es pot estendre amb plugins per adaptar-se a necessitats específiques.
 
 - 
Eficiència i Productivitat:
- Redueix el temps dedicat a tasques manuals repetitives.
 - Millora la col·laboració entre equips de desenvolupament, prova i operacions.
 
 
Com Funciona Jenkins?
Arquitectura de Jenkins
Jenkins segueix una arquitectura de servidor-client, on el servidor principal (Master) gestiona la distribució de feines a diversos nodes d'execució (Agents).
- 
Master:
- Gestiona la interfície d'usuari web.
 - Distribueix les feines als agents.
 - Recull i mostra els resultats de les feines.
 
 - 
Agents:
- Executen les feines assignades pel master.
 - Poden estar en la mateixa màquina que el master o en màquines remotes.
 
 
Flux de Treball Bàsic
- Desenvolupador: Fa un canvi en el codi i el puja al sistema de control de versions (per exemple, Git).
 - Jenkins: Detecta el canvi i inicia una feina de compilació.
 - Compilació: El codi es compila i es generen els artefactes necessaris.
 - Proves: S'executen les proves automàtiques per assegurar la qualitat del codi.
 - Desplegament: Si totes les proves passen, el codi es desplega en l'entorn de producció o en un entorn de prova.
 
Exemples Pràctics
Exemple 1: Compilació Automàtica
pipeline {
    agent any
    stages {
        stage('Compilació') {
            steps {
                echo 'Compilant el codi...'
                sh 'mvn clean install'
            }
        }
    }
}Exemple 2: Proves Automàtiques
pipeline {
    agent any
    stages {
        stage('Proves') {
            steps {
                echo 'Executant proves...'
                sh 'mvn test'
            }
        }
    }
}Exercici Pràctic
Exercici 1: Crear una Feina Senzilla a Jenkins
- Objectiu: Crear una feina que imprimeixi "Hola, Jenkins!" a la consola.
 - Passos:
- Inicia sessió a Jenkins.
 - Crea una nova feina de tipus "Freestyle project".
 - Afegeix un pas de construcció amb un script de shell que contingui 
echo "Hola, Jenkins!". - Desa i executa la feina.
 
 
Solució
- Inicia sessió a Jenkins.
 - Clica "New Item" i dona un nom a la feina.
 - Selecciona "Freestyle project" i clica "OK".
 - A la secció "Build", clica "Add build step" i selecciona "Execute shell".
 - Introdueix 
echo "Hola, Jenkins!"al camp de script. - Clica "Save" i després "Build Now".
 
Conclusió
Jenkins és una eina poderosa per a l'automatització del desenvolupament de programari, que facilita la integració contínua i el lliurament continu. Amb una comunitat activa i una gran quantitat de plugins, és una solució flexible i extensible per a qualsevol equip de desenvolupament. En el proper tema, aprendrem com instal·lar Jenkins i configurar-lo per a les nostres necessitats.
Jenkins: De Principiant a Avançat
Mòdul 1: Introducció a Jenkins
Mòdul 2: Conceptes Bàsics de Jenkins
- Visió General del Tauler de Jenkins
 - Creant i Executant Feines
 - Entenent les Pipelines de Jenkins
 - Utilitzant Plugins de Jenkins
 
Mòdul 3: Pipelines de Jenkins
- Pipeline com a Codi
 - Pipelines Declaratives vs Scriptades
 - Creant una Pipeline Simple
 - Sintaxi de Pipeline
 
Mòdul 4: Pipelines Avançades de Jenkins
- Etapes i Passos de Pipeline
 - Execució Paral·lela en Pipelines
 - Utilitzant Variables d'Entorn
 - Millors Pràctiques de Pipeline
 
Mòdul 5: Administració de Jenkins
- Gestionant Nodes de Jenkins
 - Configurant la Seguretat
 - Còpia de Seguretat i Restauració de Jenkins
 - Monitorant Jenkins
 
Mòdul 6: Integrant Jenkins
- Integració amb Sistemes de Control de Versions
 - Integració amb Eines de Compilació
 - Integració amb Eines de Prova
 - Integració amb Eines de Desplegament
 
Mòdul 7: Jenkins per a la Integració i el Lliurament Continu (CI/CD)
- Entenent CI/CD
 - Configurant una Pipeline de CI
 - Configurant una Pipeline de CD
 - Automatitzant Desplegaments
 
Mòdul 8: Temes Avançats de Jenkins
- Utilitzant Jenkins amb Docker
 - Jenkins i Kubernetes
 - Jenkins com a Codi amb Jenkinsfile
 - Escalant Jenkins
 
