En este laboratorio la meta es que el estudiante explore como utilizar flask para crear sus propios sevicios web, y explore herramientas de automatización de la cadena de integración y emisión usando CircleCI.
Ya que este laboratorio requiere que creen un repositorio separado con el fin de experimentar con las herramientas, al acabar, agregar un archivo de texto con un link al nuevo repositorio dentro de la carpeta laboratorio5 del repositorio creado en la primera clase.
Empezar por crear un repositorio nuevo para su proyecto. Se puede trabajar localmente o usando Github CodeSpaces como se cubrió en el laboratorio anterior.
En este laboratorio, aprenderás a crear una aplicación web más compleja usando Flask y a configurar un pipeline de integración continua (CI) con CircleCI. Utilizaremos herramientas como Black para formateo de código y Mypy para verificación de tipos. Puedes realizar este laboratorio en tu máquina local o utilizando GitHub Codespaces.
Flask es un microframework para Python que permite desarrollar aplicaciones web de manera rápida y sencilla. Es ligero y flexible, lo que lo hace ideal para proyectos pequeños y medianos.
CircleCI es una plataforma de integración continua y entrega continua (CI/CD) que automatiza el proceso de construcción, prueba y despliegue de aplicaciones de software. Permite a los equipos de desarrollo integrar y entregar código de manera más rápida y eficiente.
-
Instalar Flask:
pip install Flask
-
Crear la Estructura del Proyecto:
mkdir flask_app cd flask_app mkdir templates static touch app.py
-
Configurar la Aplicación Flask:
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def home(): return render_template('home.html') @app.route('/about') def about(): return render_template('about.html') if __name__ == '__main__': app.run(debug=True)
-
Crear Plantillas HTML:
-
templates/home.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Home</title> </head> <body> <h1>Página de Inicio</h1> <a href="{{ url_for('acercade') }}">Acerca de</a> </body> </html>
-
templates/acercade.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Acerca de</title> </head> <body> <h1>Me llamo XXX</h1> <a href="{{ url_for('home') }}">Inicio</a> </body> </html>
-
-
Crear un Archivo de Configuración de CircleCI:
- Dentro del directorio del proyecto, crea una carpeta
.circleci
y un archivoconfig.yml
:mkdir .circleci touch .circleci/config.yml
- Dentro del directorio del proyecto, crea una carpeta
-
Escribir la Configuración de CircleCI:
Revisar la documentación de CircleCI para la información más actualizada sobre la configuración.
version: 2.1
jobs:
test:
docker:
- image: circleci/python:3.8
steps:
- checkout
- run:
name: Instalar dependencias
command: |
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- run:
name: Ejecutar Black
command: |
. venv/bin/activate
black --check .
- run:
name: Ejecutar Mypy
command: |
. venv/bin/activate
mypy app.py
workflows:
version: 2
test:
jobs:
- test
-
Agregar Dependencias a
requirements.txt
:Flask black mypy
-
Configurar el Proyecto en CircleCI:
- Ve a CircleCI y conecta tu repositorio de GitHub.
- CircleCI detectará automáticamente el archivo
config.yml
y comenzará a ejecutar el pipeline.