Skip to content

Cómo Construir Tu Primer Pipeline CI/CD Usando GitHub Actions

Así que has escuchado hablar de CI o CI/CD. De repente lo mencionaron en una reunión rápida. O lo viste en una oferta de trabajo. O simplemente te entró la curiosidad y decidiste investigar. Cualquiera que haya sido el motivo, bien ahí. Estás acá, y esta guía te va a acompañar paso a paso para que armes tu primer pipeline usando GitHub Actions.

Esto no es una guía para automatización a nivel empresarial. Es una intro limpia, concreta y práctica. Vamos a usar un script básico en Python y vamos a configurar un flujo de trabajo que ejecute pruebas cada vez que hagas un cambio.

Vamos a empezar a automatizar esas tareas repetitivas que nadie quiere hacer.

Lo que vas a necesitar

Nada complicado. Solo estas tres cosas.

  • Una cuenta de GitHub. Si no tienes una, créala. Es gratis y vas a terminar usándola para muchas cosas más.
  • Un script básico en Python. Algo sencillo. Incluso con un print() basta para comenzar. Luego le metemos más cosas..

Paso 1: Crea un repositorio en GitHub

Empecemos creando un repositorio de GitHub.

  • Entra a tu cuenta de GitHub.
  • Haz clic en el botón New repository
  • Ponle un nombre como ci-cd-python-pipeline
  • Marca la opción Add a README file
  • Haz clic en Create repository
  • Listo. Ya tienes un lugar donde vas a montar tu primer pipeline.

Paso 2: Agrega un script en Python

Es hora de darle algo de poder de Python.

  • Dentro del nuevo repo:
  • Haz clic en Add file y luego en Create new file
  • Nómbralo hello.py
  • Pega este código:
def my_function():
    return "¡Hola, este es mi primer CI/CD!"

if __name__ == "__main__":
    print(my_function())
  • Guarda el archivo con un mensaje de commit corto, algo como add hello.py

Ya está. Tienes algo que probar.

Paso 3: Hora de ponerle acción con GitHub Actions

Vamos a empezar con la automatización.

  • Ve a la pestaña Actions
  • Ignora las plantillas sugeridas y haz clic en set up a workflow yourself
  • Ponle este nombre al archivo: .github/workflows/python-ci.yml
  • Ese nombre y esa ruta tienen que estar tal cual. GitHub busca el flujo exactamente en esa carpeta.

Paso 4: Escribe el flujo de trabajo

Copia y pega esto en el archivo python-ci.yml:

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é hace este flujo?

Vamos por partes.

  • name: así se llama el flujo. Puedes ponerle lo que quieras. Algo creativo como SuperPythonChecker3000 si te animas.
  • on: esto le dice a GitHub cuándo debe ejecutarse. En este caso, cuando haces push al branch principal o cuando creas un pull request hacia él.
  • jobs: define el trabajo que queremos correr. En este caso, uno llamado build.
  • runs-on: le indica a GitHub que lo corra en un entorno Linux que ellos mismos te prestan
  • steps: son los pasos que sigue el flujo:
  1. Primero descarga tu código del repo
  2. Luego instala Python
  3. Después instala las dependencias, si es que las hay
  4. Finalmente corre el script

Paso 5: Haz un cambio y mira qué pasa

Una vez que tengas listo tu archivo del workflow, haz clic en Commit changes para guardarlo. Te va a salir una ventanita pidiendo un mensaje. Escribe algo como Add CI workflow y confirma.

Ahora viene lo bueno.

Ve a la pestaña Actions en tu repo. Si todo está bien armado, vas a ver un check verde al lado del flujo. Eso significa que todo se ejecutó correctamente y tu script corrió sin problemas.

Si ves una cruz roja, no te asustes. Haz clic y revisa los logs para ver qué falló. Así se aprende.

    Paso 6: Haz otro cambio y deja que corra solo

    La idea de CI no es correr un script una sola vez y listo. Se trata de que todo se ejecute cada vez que cambias algo.

    Así que abre hello.py y cambia el mensaje. Puedes ponerle algo como Hello, GitHub Actions!.

    Guarda. Haz commit. Sube el cambio.

    Y ya está. El workflow se lanza solo. No necesitas hacer nada más. Todo corre de nuevo y te avisa si algo dejó de funcionar.

    Paso Extra: ¿Quieres subirle el nivel? Agrega una prueba

    Si quieres ir un paso más allá, vamos a agregar una prueba simple. Esto te asegura que tu script sigue haciendo lo que esperas cada vez que lo toques.

    Crea un nuevo archivo llamado test_hello.py y pon este 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 :

    1. 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
    1. Luego, agrega la prueba después de «Run Python script»:
        - name: Run Python script
          run: |
            python hello.py
            
        - name: Run tests
          run: |
            pytest

    Haz commit y sube los cambios. GitHub Actions ahora correrá tu script y el test cada vez que actualices el código.

    Si todo va bien, verás el check verde. Si algo rompe, verás el aviso y podrás corregirlo antes de que se convierta en un problema más grande.

    Para cerrar

    Y listo. Acabas de armar tu primer pipeline CI con GitHub Actions. Hiciste un cambio. Lo subiste. Se ejecutó el script. Se corrió el test. No tuviste que mover un dedo más.

    Es básico, sí. Pero funciona. Y es justo este tipo de automatización temprana lo que ayuda a que los proyectos grandes no se vuelvan una pesadilla más adelante.

    Nos falta la parte de CD, que es donde entra el despliegue. Pero eso lo vemos en otro post.

    Por ahora, disfruta tener una cosa menos que hacer a mano.

    Published inData Engineering