En aquest tema, explorarem les eines més populars utilitzades per implementar el lliurament continu (CD). Aquestes eines ajuden a automatitzar el procés de desplegament de codi, assegurant que les aplicacions es lliurin de manera ràpida i fiable. A continuació, es presenten algunes de les eines més utilitzades en la indústria.
- Jenkins
Jenkins és una eina d'integració contínua i lliurament continu de codi obert que permet automatitzar diverses parts del procés de desenvolupament de programari.
Característiques clau:
- Plugins: Més de 1.500 plugins disponibles per integrar-se amb gairebé qualsevol eina de desenvolupament.
- Pipeline as Code: Permet definir pipelines de CD utilitzant codi (Jenkinsfile).
- Escalabilitat: Pot executar-se en un sol servidor o en una granja de servidors per gestionar grans volums de treball.
Exemple de Jenkinsfile:
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandes per construir l'aplicació } } stage('Test') { steps { echo 'Testing...' // Comandes per executar proves } } stage('Deploy') { steps { echo 'Deploying...' // Comandes per desplegar l'aplicació } } } }
- GitLab CI/CD
GitLab CI/CD és una eina integrada dins de GitLab que permet gestionar pipelines de CI/CD directament des del repositori de codi.
Característiques clau:
- Integració estreta: Integrat directament amb GitLab, permetent gestionar pipelines des del mateix lloc on es troba el codi.
- CI/CD as Code: Definició de pipelines utilitzant un fitxer
.gitlab-ci.yml
. - Escalabilitat: Suport per a múltiples executors per distribuir la càrrega de treball.
Exemple de .gitlab-ci.yml
:
stages: - build - test - deploy build: stage: build script: - echo "Building the application..." - # Comandes per construir l'aplicació test: stage: test script: - echo "Running tests..." - # Comandes per executar proves deploy: stage: deploy script: - echo "Deploying the application..." - # Comandes per desplegar l'aplicació
- CircleCI
CircleCI és una eina de CI/CD basada en el núvol que permet automatitzar el procés de construcció, prova i desplegament de codi.
Característiques clau:
- Configuració fàcil: Definició de pipelines utilitzant un fitxer
config.yml
. - Integració amb VCS: Suport per a GitHub i Bitbucket.
- Escalabilitat: Capacitat per executar múltiples treballs en paral·lel.
Exemple de config.yml
:
version: 2.1 jobs: build: docker: - image: circleci/node:10 steps: - checkout - run: echo "Building the application..." - run: # Comandes per construir l'aplicació test: docker: - image: circleci/node:10 steps: - checkout - run: echo "Running tests..." - run: # Comandes per executar proves deploy: docker: - image: circleci/node:10 steps: - checkout - run: echo "Deploying the application..." - run: # Comandes per desplegar l'aplicació workflows: version: 2 build_and_test_and_deploy: jobs: - build - test - deploy
- Travis CI
Travis CI és una eina de CI/CD basada en el núvol que s'integra fàcilment amb GitHub per automatitzar la construcció i prova de codi.
Característiques clau:
- Configuració senzilla: Definició de pipelines utilitzant un fitxer
.travis.yml
. - Integració amb GitHub: Suport natiu per a repositoris GitHub.
- Escalabilitat: Capacitat per executar múltiples treballs en paral·lel.
Exemple de .travis.yml
:
language: node_js node_js: - "10" script: - echo "Building the application..." - # Comandes per construir l'aplicació - echo "Running tests..." - # Comandes per executar proves deploy: provider: script script: echo "Deploying the application..." && # Comandes per desplegar l'aplicació on: branch: master
- AWS CodePipeline
AWS CodePipeline és un servei de lliurament continu completament gestionat que permet automatitzar els pipelines de construcció, prova i desplegament.
Característiques clau:
- Integració amb AWS: Suport natiu per a altres serveis d'AWS com S3, CodeBuild, CodeDeploy, etc.
- Configuració basada en la web: Definició de pipelines utilitzant la consola d'AWS.
- Escalabilitat: Capacitat per gestionar pipelines complexos i de gran escala.
Exemple de configuració:
{ "pipeline": { "name": "MyPipeline", "roleArn": "arn:aws:iam::123456789012:role/AWSCodePipelineServiceRole", "artifactStore": { "type": "S3", "location": "my-pipeline-artifacts" }, "stages": [ { "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "S3", "version": "1" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "configuration": { "S3Bucket": "my-source-bucket", "S3ObjectKey": "source.zip" } } ] }, { "name": "Build", "actions": [ { "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "provider": "CodeBuild", "version": "1" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "outputArtifacts": [ { "name": "BuildArtifact" } ], "configuration": { "ProjectName": "MyCodeBuildProject" } } ] }, { "name": "Deploy", "actions": [ { "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "CodeDeploy", "version": "1" }, "inputArtifacts": [ { "name": "BuildArtifact" } ], "configuration": { "ApplicationName": "MyCodeDeployApplication", "DeploymentGroupName": "MyDeploymentGroup" } } ] } ] } }
Conclusió
Les eines de CD són essencials per automatitzar el procés de desplegament de codi, millorant l'eficiència i la fiabilitat del lliurament de programari. Jenkins, GitLab CI/CD, CircleCI, Travis CI i AWS CodePipeline són algunes de les eines més populars que ofereixen una àmplia gamma de funcionalitats per satisfer les necessitats de diferents equips de desenvolupament. En el següent tema, explorarem com configurar un pipeline de CD utilitzant una d'aquestes eines.
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