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.ymlal 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 testPas 3: Configuració de Docker
-
Crear un Fitxer Dockerfile:
- Crea un fitxer anomenat
Dockerfileal 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.ymlper 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:latestExercici 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
