Introducció

En aquest tema, aprendrem sobre la integració i el desplegament continu (CI/CD) en el context de les aplicacions Django. La CI/CD és una pràctica de desenvolupament de programari que permet als equips lliurar canvis de codi de manera més freqüent i fiable. La integració contínua (CI) implica la fusió freqüent del codi en un repositori compartit, mentre que el desplegament continu (CD) automatitza el procés de desplegament del codi a l'entorn de producció.

Objectius

  • Comprendre els conceptes bàsics de CI/CD.
  • Configurar un pipeline de CI/CD per a una aplicació Django.
  • Utilitzar eines com GitHub Actions i Docker per automatitzar el procés de desplegament.

Conceptes Bàsics de CI/CD

Integració Contínua (CI)

  • Definició: La integració contínua és una pràctica de desenvolupament on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia.
  • Beneficis:
    • Detectar errors més ràpidament.
    • Millorar la qualitat del codi.
    • Reduir el temps de fusió de codi.

Desplegament Continu (CD)

  • Definició: El desplegament continu és una extensió de la CI que automatitza el desplegament del codi a l'entorn de producció.
  • Beneficis:
    • Reduir el temps de lliurament de noves funcionalitats.
    • Minimitzar els riscos associats amb els desplegaments.
    • Assegurar que el codi sempre estigui en un estat desplegable.

Configuració d'un Pipeline de CI/CD

Eines Necessàries

  • GitHub: Per al control de versions i repositori de codi.
  • GitHub Actions: Per a la configuració del pipeline de CI/CD.
  • Docker: Per a la creació d'imatges de contenidors i desplegament.

Pas 1: Configuració del Repositori de GitHub

  1. Crear un Repositori:

    • Inicia sessió a GitHub i crea un nou repositori per a la teva aplicació Django.
  2. Pujar el Codi:

    • Puja el codi de la teva aplicació Django al repositori.

Pas 2: Configuració de GitHub Actions

  1. Crear un Fitxer de Workflow:

    • Crea un fitxer anomenat .github/workflows/ci.yml al teu repositori.
  2. Definir el Workflow:

    • Afegeix el següent contingut al fitxer ci.yml:
name: Django CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_DB: django_db
          POSTGRES_USER: django_user
          POSTGRES_PASSWORD: django_password
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run tests
      env:
        DATABASE_URL: postgres://django_user:django_password@localhost:5432/django_db
      run: |
        python manage.py migrate
        python manage.py test

Pas 3: Configuració de Docker

  1. Crear un Fitxer Dockerfile:

    • Crea un fitxer anomenat Dockerfile al directori arrel del teu projecte.
  2. Definir la Imatge de Docker:

    • Afegeix el següent contingut al fitxer Dockerfile:
# Utilitza una imatge base oficial de Python
FROM python:3.8-slim

# Estableix el directori de treball
WORKDIR /app

# Copia els fitxers de requeriments i instal·la les dependències
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Copia el codi de l'aplicació
COPY . .

# Exposa el port 8000
EXPOSE 8000

# Comanda per executar l'aplicació
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "myproject.wsgi:application"]

Pas 4: Desplegament Automàtic

  1. Configurar Secrets a GitHub:

    • Afegeix secrets al teu repositori de GitHub per a les credencials de desplegament (per exemple, DOCKER_USERNAME, DOCKER_PASSWORD).
  2. Actualitzar el Workflow per al Desplegament:

    • Afegeix els següents passos al fitxer ci.yml per a la construcció i pujada de la imatge Docker:
    - name: Build Docker image
      run: docker build -t ${{ secrets.DOCKER_USERNAME }}/myproject:latest .

    - name: Log in to Docker Hub
      run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin

    - name: Push Docker image
      run: docker push ${{ secrets.DOCKER_USERNAME }}/myproject:latest

Exercici Pràctic

Objectiu

Configurar un pipeline de CI/CD per a una aplicació Django utilitzant GitHub Actions i Docker.

Passos

  1. Crea un repositori de GitHub per a la teva aplicació Django.
  2. Puja el codi de la teva aplicació al repositori.
  3. Configura GitHub Actions per executar proves automàtiques.
  4. Crea un fitxer Dockerfile per a la teva aplicació.
  5. Configura GitHub Actions per construir i pujar la imatge Docker.

Solució

La solució completa es troba en els passos detallats anteriorment. Assegura't de seguir cada pas i verificar que el pipeline de CI/CD funcioni correctament.

Conclusió

En aquesta secció, hem après a configurar un pipeline de CI/CD per a una aplicació Django utilitzant GitHub Actions i Docker. La CI/CD és una pràctica essencial per a la lliurament contínua de programari d'alta qualitat. Amb aquesta configuració, podràs automatitzar el procés de proves i desplegament, millorant l'eficiència i la fiabilitat del teu desenvolupament de programari.

© Copyright 2024. Tots els drets reservats