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
-
Crear un Repositori:
- Inicia sessió a GitHub i crea un nou repositori per a la teva aplicació Django.
-
Pujar el Codi:
- Puja el codi de la teva aplicació Django al repositori.
Pas 2: Configuració de GitHub Actions
-
Crear un Fitxer de Workflow:
- Crea un fitxer anomenat
.github/workflows/ci.yml
al teu repositori.
- Crea un fitxer anomenat
-
Definir el Workflow:
- Afegeix el següent contingut al fitxer
ci.yml
:
- Afegeix el següent contingut al fitxer
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
-
Crear un Fitxer Dockerfile:
- Crea un fitxer anomenat
Dockerfile
al directori arrel del teu projecte.
- Crea un fitxer anomenat
-
Definir la Imatge de Docker:
- Afegeix el següent contingut al fitxer
Dockerfile
:
- Afegeix el següent contingut al fitxer
# 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
-
Configurar Secrets a GitHub:
- Afegeix secrets al teu repositori de GitHub per a les credencials de desplegament (per exemple,
DOCKER_USERNAME
,DOCKER_PASSWORD
).
- Afegeix secrets al teu repositori de GitHub per a les credencials de desplegament (per exemple,
-
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:
- Afegeix els següents passos al fitxer
- 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
- Crea un repositori de GitHub per a la teva aplicació Django.
- Puja el codi de la teva aplicació al repositori.
- Configura GitHub Actions per executar proves automàtiques.
- Crea un fitxer Dockerfile per a la teva aplicació.
- 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.
Curs de Desenvolupament Web amb Django
Mòdul 1: Introducció a Django
- Què és Django?
- Configuració de l'Entorn de Desenvolupament
- Creació del teu Primer Projecte Django
- Comprensió de l'Estructura del Projecte Django
Mòdul 2: Conceptes Bàsics de Django
- Aplicacions Django i Estructura del Projecte
- Enrutament d'URL i Vistes
- Plantilles i Fitxers Estàtics
- Models i Bases de Dades
- Interfície d'Administració de Django
Mòdul 3: Django Intermedi
Mòdul 4: Django Avançat
- Consultes Avançades amb Django ORM
- Models d'Usuari Personalitzats
- Senyalitzacions de Django
- Proves en Django
- Optimització del Rendiment