Un Hello World en un proyecto minimalista en cualquier lenguaje de programación o scripting que pretende hacer una sencilla demo de ejecución satisfactoria del código que muestra en la pantalla el texto "Hello World".
En este caso el lenguaje es Python y utilizaremos PyCharm como IDE.
El objetivo de este proyecto es principalmente didáctico, un ejemplo básico de proyecto Python con PyCharm, con su integración con Git (incluyendo su .gitignore, estructura de ramas, etc.), gestión de paquetes o librerías (Virtual Environments), ejecución y depuración de código, dockerización y ejecución en local con Docker, Docker Compose y Kubernetes (MiniKube), etc.
Este repo se ha creado para complementar el Post Hello World con Python y PyCharm del Blog El Willie - The Geeks invaders
Para la ejecución sobre MiniKube te puede interesar leer el Post Introducción a MiniKube e instalación en Windows 11.
Se trata de un simple programa Python con un único fichero main.py que ejecuta el código que deseamos.
Puedes apoyar mi trabajo haciendo "☆ Star" en el repo o nominarme a "GitHub Star". Gracias !!!
Si te interesa aprender Python, tienes disponibles los siguientes cursos gratuitos de Python en Edube - OpenEDG:
- Python Essentials 1
- Python Essentials 2
- Python Advanced 1 – OOP
- Python Advanced 2 – Best Practices and Standardization
- Python Advanced 3 – GUI Programming
- Python Advanced 4 – RESTful APIs
- Python Advanced 5 – File Processing
Otro recurso muy interesante es Real Python, donde podrás encontrar tutoriales, baterías de preguntas para ponerte a prueba (quizzes), etc.
En mi Blog personal (El Willie - The Geeks invaders) y en mi perfil de GitHub, encontrarás más información sobre mi, y sobre los contenidos de tecnología que comparto con la comunidad.
Este repo se puede clonar desde GitHub utilizando este enlace HTTP.
A continuación se muestra el comando git clone usando SSH en lugar de HTTP.
git clone git@github.com:ElWillieES/python-hello-world.git
- Ramas permanentes. Utilizaremos master como rama principal.
- Ramas temporales o efímeras. Utilizaremos feature/xxx (nueva característica) y/o hotfix/xxx (corregir un bug crítico urgente), que nacen de la rama principal y mezclan de nuevo sobre ella mediante Merge Request.
- Gestión de Releases. Para cada Release generaremos una etiqueta (tag) del tipo release/a.b.c.
En la descripción de las ramas de feature y hotfix, se especificará el ID de la tarea o issue asociada, por ejemplo:
feature/3813
hotfix/2262
Si necesitáramos varias ramas para una misma tarea, añadiremos un número secuencial para evitar la colisión:
feature/3813-1
feature/3813-2
Como recomendación y buena práctica, el título para los Commits y de las Merge Request, pueden empezar con un icono y un prefijo, seguido de dos puntos y de un mensaje corto que comience por un verbo imperativo (ej: add, change, fix, remove, etc.). Por ejemplo:
✨ feat(backend): add support for users having multiple suscriptions
Prefijos:
feat: Nueva característica
fix: Corrección a un error
docs: Documentació
style: Cambios de formato (guía de estilo)
refactor: Renombrar una variable, simplificar un método, etc…
test: Añadir o modificar tests
chore: Rareas rutinarias, como modificar el .gitignore, etc…
Iconos:
💄 Cosmetic
🎨 Improve format / structure
🛠/🐛 Fix
✨ Feature
🚑 Hotfix
📝 Doc
🚀 Release
♻ Refactor
🐳 Devops
☸ Kubernetes
🧪 Arquitectura de tests
✅ Añadir un Test
✔ Hacer que un test pase
💩 Ñapas
🏗 Architectural changes
🤡 Mocks
💚 Fixing Build
📈 Analiltycs
🌐 Localizations
😒 Chore
💫 Animations & Transitions
♿ Accesibility
🚧 Feature work in progress
🚀 Launch a new build
[Esta sección es ilustrativa, ya que para este "Hello World" no aplica]
El diseño de todo el proyecto se encuentra subido a Figma
Aquí podemos encontrar tanto los wireframes de las pantallas como el diseño final.
[Esta sección es ilustrativa, ya que para este "Hello World" no aplica]
El backlog del proyecto se gestiona en Jira: Jira ElWillie.
Aquí podremos encontrar Historias de Usuario, Tareas, y Subtareas, así como los Sprints (el activo y los históricos).
[Esta sección es ilustrativa, ya que para este "Hello World" no aplica]
Existe un pipeline CI/CD en Jenkins para desplegar en el entorno correspondiente.
Se puede ejecutar la aplicación en local con Docker.
Los siguientes comandos ejecutados en la raíz del Proyecto, muestran cómo crear una imagen en local, listar las imágenes que tenemos disponible sen local, y cómo ejecutar un contenedor con nuestra imagen.
docker build -t python-hello-world .
docker images
docker run --rm python-hello-world
Podemos arrancar una sesión interativa de Bash sobre un Contendor con nuestra imagen Docker, para de este modo, poder analizar mejor incidencias y problemas que nos puedan surgir.
docker run --rm -it python-hello-world /bin/bash
El siguiente comando ejecutado en la raíz del Proyecto, muestra cómo ejecutar nuestra aplicación con Docker Compose.
docker-compose -f docker-compose.yml up --build -d
Se puede ejecutar la aplicación en local si tienes instalado MiniKube.
Los siguientes comandos ejecutados en la raíz del Proyecto, muestran cómo tagear la Imagen Docker para subirla al Registry local de MiniKube.
docker tag python-hello-world localhost:5000/python-hello-world
docker push localhost:5000/python-hello-world
Realizado esto, en la ventana Terminal de PyCharm, podemos ejecutar los siguientes comandos para aplicar los manifiestos en nuestro Cluster de MiniKube (namespace y Job), y consultar el Log de ejecución del Job que acabamos de crear y ejecutar (la salida del Log, será igual a cuando lo ejecutamos en Docker o directamente en PyCharm).
cd kube
kubectl apply -f ns-hello-world.yml
kubectl apply -f job-python-hello-world.yml
kubectl logs job/python-hello-world -n hello-world
Al finalizar podemos eliminar el namespace de Kubernetes, para eliminar todos los recursos y dejar la casa limpia.
kubectl delete ns hello-world
Nombre | Posición en el Proyecto | |
---|---|---|
El Willie | Product Owner | elwillieES@gmail.com |