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.

  1. 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ó
            }
        }
    }
}

  1. 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ó

  1. 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

  1. 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

  1. 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.

© Copyright 2024. Tots els drets reservats