Si estás buscando sumergirte en el mundo de CI/CD (es decir, Integración Continua/Despliegue Continuo para quienes no dominan la jerga), has llegado al lugar correcto. Hoy crearemos tu primer pipeline CI/CD usando GitHub Actions—para automatizar las pruebas en un script de Python muy simple. No te preocupes; vamos despacio, con un enfoque ligero y explicaciones sencillas.
¿Qué Necesitas Antes de Comenzar?
- Una cuenta de GitHub. (Si aún no tienes una, en serio, ve y créala—es gratis y te da acceso a un montón de cosas geniales).
- Tu entorno WSL (Windows Subsystem for Linux) Ubuntu confiable.
- Un script de Python. Cualquier script de Python. Incluso si es solo
print('Hello, world!')
. Hoy lo mantenemos simple.
Paso 1: Crea Tu Repositorio
Empecemos creando un repositorio de GitHub.
- Inicia sesión en GitHub y haz clic en el botón “New” en la sección de Repositorios.
- Ponle un nombre chevere a tu repositorio, como
ci-cd-python-pipeline
. Puedes hacerlo público o privado; depende de ti. No olvides marcar la casilla que dice “Add a README file”, eso facilita las cosas. - Haz clic en “Create repository”. ¡Bam! Ahora tienes un hogar para tu futura obra maestra de CI/CD.
Paso 2: Agrega Tu Script de Python
Es hora de darle algo de poder de Python.
- En tu nuevo repositorio, haz clic en el botón ‘Add file’, luego selecciona ‘Create new file’.
- Nombra tu archivo algo como
hello.py
(un clásico). - Pega tu código Python, por ejemplo:
def my_function():
return "¡Hola, este es mi primer CI/CD!"
if __name__ == "__main__":
print(my_function())
- Haz commit de tu nuevo archivo en la rama
main
haciendo clic en “Commit Changes…”. Aparecerá una ventana emergente que te pedirá ingresar un mensaje de commit—solo agrega una breve descripción como ‘Add hello.py’. ¡Felicidades! Ahora eres oficialmente dueño de un script de Python.
Paso 3: Vamos a Ponernos en Acción con GitHub Actions
¡Ahora viene la parte divertida—configurar GitHub Actions para un poco de magia de automatización!
- Haz clic en la pestaña Actions en tu repositorio. GitHub te sugerirá algunas plantillas, ¡pero vamos a crear la nuestra!
- Haz clic en Set up a workflow yourself.
- Nombra tu archivo de workflow
.github/workflows/python-ci.yml
. La ruta es importante, así que asegúrate de que sea exactamente así.
Paso 4: Escribe el Workflow
Es hora de decirle a GitHub qué hacer. No te preocupes, GitHub escucha bien.
Aquí está el código que pegarás para crear un workflow que se ejecutará cada vez que subas código a tu repositorio:
name: Python CI Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Run Python script
run: |
python hello.py
¿Qué Está Pasando Aquí?
- name: Llamamos a nuestro workflow
Python CI Pipeline
. Siéntete libre de ser creativo aquí, comoDeploy-o-Tron 3000
. - on: Este workflow se activará cada vez que subas algo a la rama
main
o crees un pull request hacia ella. - jobs: Definimos el trabajo llamado
build
. - runs-on: Este trabajo se ejecutará en
ubuntu-latest
, que básicamente es una máquina virtual que GitHub nos presta amablemente. - steps: Estos son los comandos individuales que ejecutaremos.
- Primero, extraemos el código (para que GitHub sepa con qué archivos trabajar).
- Luego configuramos Python.
- Después, instalamos las dependencias (si es que se necesitan—por ahora, no las hay).
- Por último, ejecutamos el script para asegurarnos de que funcion.
Paso 5: Haz Push de Tus Cambios y Mira la Magia
- Guarda el archivo de workflow haciendo clic en Commit changes…. Después de hacer clic en este botón, aparecerá una ventana emergente que te pedirá ingresar un mensaje de commit—solo agrega una breve descripción como ‘Add CI workflow’.
- Si todo sale bien, verás un gran check verde en la pestaña Actions indicando que tu workflow se ejecutó correctamente. Si hay algún problema, es posible que veas una cruz roja, lo que significa que algo necesita ser arreglado.
Paso 6: Haz un Cambio y Pruébalo
CI/CD no se trata solo de ejecutar tu script una vez; se trata de automatizar pruebas cada vez que cambias el código.
- Edita tu script
hello.py
—tal vez cambia el mensaje aHello, GitHub Actions!
. - Haz commit del cambio.
- Tu workflow se ejecutará automáticamente de nuevo. Fácil, ¿verdad?
Paso Extra: Agrega Algunas Pruebas
Si quieres ir un paso más allá, ¡agrega una prueba! Crea un nuevo archivo llamado test_hello.py
e incluye el siguiente código:
import pytest
from hello import my_function
def test_my_function():
assert my_function() == "Hello, GitHub Actions!"
Actualiza tu archivo .github/workflows/python-ci.yml
:
- Primero, agrega
pip install pytest
en el paso ‘Install dependencies’, para que se vea así:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- Luego, agrega la prueba después de «Run Python script»:
- name: Run Python script
run: |
python hello.py
- name: Run tests
run: |
pytest
Conclusión
¡Y ahí lo tienes! Acabas de configurar un pipeline básico de CI/CD que ejecuta tu script de Python cada vez que realizas un cambio. Este ejemplo solo cubre la parte de CI, pero exploraremos la parte de CD en una publicación futura. Puede ser simple ahora, pero las habilidades que aprendas aquí serán la base para una automatización más compleja en el futuro.