GitHub Actions es una plataforma de integración continua y entrega continua (CI/CD) que le permite automatizar su canalización (pipeline) de compilación, prueba y despliegue. Puede crear flujos de trabajo (workflows) que compilen y prueben cada solicitud de extracción (pull request) a su repositorio, o que desplieguen las solicitudes de extracción fusionadas a producción.
En este laboratorio, creará su primer flujo de trabajo simple. Aprenderá la estructura de directorios estándar requerida por GitHub Actions, cómo definir el nombre del flujo de trabajo, cómo especificar qué eventos activan el flujo de trabajo y cómo definir trabajos (jobs) para ejecutar comandos.
Este laboratorio se basa en el repositorio que creó en el laboratorio anterior. Clonará el repositorio github-actions-demo en su entorno LabEx y le agregará su primer archivo de flujo de trabajo.
Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 96%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.
Crear un nuevo archivo YAML llamado hello-world.yml en .github/workflows
En este paso, clonarás el repositorio que creaste en el laboratorio anterior y crearás tu primer archivo de flujo de trabajo.
En la página de tu repositorio de GitHub para github-actions-demo, haz clic en el botón verde Code.
Asegúrate de que la pestaña HTTPS esté seleccionada y copia la URL. Debería verse como https://github.com/your-username/github-actions-demo.git.
Abre la terminal en el entorno LabEx. La ruta predeterminada es ~/project.
Usa el comando git clone para descargar el repositorio. Reemplaza your-username con tu nombre de usuario real de GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Salida de Ejemplo:
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
Navega al repositorio clonado:
cd ~/project/github-actions-demo
El directorio .github/workflows ya debería existir del laboratorio anterior. Verifica que existe:
ls -R .github
Crea un nuevo archivo llamado hello-world.yml dentro del directorio .github/workflows. Este archivo contendrá la configuración de nuestro flujo de trabajo:
touch .github/workflows/hello-world.yml
Puedes verificar que el archivo se ha creado con éxito:
ls -R .github
Deberías ver el directorio workflows conteniendo tanto main.yml (del laboratorio anterior) como hello-world.yml.
Añadir la clave 'name' con el valor 'Hello World Workflow' al archivo YAML
En este paso, comenzarás a editar el archivo YAML para definir tu flujo de trabajo (workflow). El primer elemento que solemos añadir es el name (nombre) del flujo de trabajo. Este nombre aparecerá en la pestaña Actions (Acciones) del repositorio de GitHub, facilitando su identificación.
Abre el archivo hello-world.yml usando el editor WebIDE. Puedes encontrar el archivo en el explorador de archivos del lado izquierdo, bajo project/github-actions-demo/.github/workflows/.
Añade el siguiente contenido al archivo:
name: Hello World Workflow
Este par clave-valor asigna un nombre legible por humanos a tu flujo de trabajo.
Después de añadir el contenido, guarda el archivo (Ctrl+S o Cmd+S).
Puedes verificar el contenido del archivo en la terminal:
cat .github/workflows/hello-world.yml
Añadir la clave 'on' con el evento 'push' para activar con los envíos (pushes)
En este paso, definirás cuándo debe ejecutarse el flujo de trabajo (workflow). Esto se hace usando la palabra clave on. Queremos que este flujo de trabajo se ejecute cada vez que se haga un push de código al repositorio.
Abre de nuevo .github/workflows/hello-world.yml y añade las siguientes líneas debajo de la clave name:
on: [push]
Tu archivo debería verse ahora así:
name: Hello World Workflow
on: [push]
La configuración on: [push] indica a GitHub Actions que active este flujo de trabajo cada vez que se realiza un git push a cualquier rama del repositorio.
Nota: GitHub Actions soporta muchos otros eventos de activación (trigger events). Por ejemplo:
pull_request: Se activa cuando se abre, sincroniza o cierra una solicitud de extracción (pull request).
workflow_dispatch: Permite la activación manual desde la pestaña GitHub Actions.
schedule: Se ejecuta según un horario usando sintaxis cron.
release: Se activa cuando se publica un lanzamiento (release).
Y muchos más eventos como issues, pull_request_review, etc.
En este laboratorio, usamos on: [push] porque es el disparador más simple y común. Puedes explorar otros tipos de disparadores a medida que avanzas en tu camino con GitHub Actions.
Guarda el archivo después de realizar los cambios.
Añadir la sección 'jobs' con un trabajo (job) llamado 'build'
En este paso, definirás el trabajo real que realizará el flujo de trabajo (workflow). Una ejecución de flujo de trabajo (workflow run) se compone de uno o más jobs. Los trabajos se ejecutan en paralelo por defecto.
Añadiremos una sección jobs que contendrá un único trabajo llamado build. Este trabajo se ejecutará en un entorno Ubuntu y ejecutará un comando simple.
Añade el siguiente contenido a tu archivo .github/workflows/hello-world.yml:
runs-on: ubuntu-latest: Especifica el tipo de máquina (runner) en la que se ejecutará el trabajo.
steps:: Una lista de tareas a ejecutar en el trabajo.
run: echo "Hello, World!": Un comando de shell para ejecutar.
Tu archivo completo debería verse ahora así:
name: Hello World Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, World!"
Guarda el archivo.
Confirmar (Commit) y enviar (push) el archivo de flujo de trabajo usando comandos git
En este paso, confirmarás (commit) el nuevo archivo de flujo de trabajo y lo enviarás (push) a GitHub. Esto activará el flujo de trabajo que acabas de crear.
Asegúrate de estar en el directorio del repositorio:
cd ~/project/github-actions-demo
Verifica el estado de tu repositorio para ver el archivo no rastreado:
git status
Añade el nuevo archivo al área de preparación (staging area):
git add .github/workflows/hello-world.yml
Confirma los cambios con un mensaje descriptivo:
git commit -m "Add hello world workflow"
Salida de Ejemplo:
[main ... ] Add hello world workflow
1 file changed, X insertions(+), X deletions(-)
create mode 100644 .github/workflows/hello-world.yml
Envía los cambios al repositorio remoto en GitHub:
git push
Nota sobre la Autenticación:
Cuando ejecutes git push, el WebIDE te pedirá automáticamente que te autentiques. Sigue estos pasos detallados:
Aparecerá una ventana emergente con el mensaje: "The extension 'GitHub' wants to sign in using GitHub." Haz clic en Allow.
Aparecerá una nueva notificación. Haz clic en "Copy&Continue to GitHub", y luego haz clic en "Open" en la siguiente solicitud.
Inicia sesión en tu cuenta de GitHub en la ventana del navegador que se abre e introduce el código de autorización que se copió. Después de confirmar la autorización, la página se cerrará automáticamente.
Espera unos segundos y verás que la terminal completa la operación de push con éxito.
Nota de Privacidad: El WebIDE solicitará acceso completo a tu cuenta de GitHub con fines de autenticación. No tienes que preocuparte por problemas de privacidad: la VM de LabEx se destruirá inmediatamente después de completar el laboratorio actual, y tus credenciales e información de autorización no se conservarán.
Este proceso de autenticación no requiere configuración manual del nombre de usuario o del Personal Access Token (PAT).
Después de seguir los pasos de autenticación, verás una salida similar a la siguiente:
Salida de Ejemplo:
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
XXXXXXX..XXXXXXX main -> main
Visita tu repositorio en GitHub en un navegador web y navega a la pestaña Actions. Deberías ver el "Hello World Workflow" ejecutándose o completado.
Nota: Cuando envías código (push), se pueden activar múltiples Actions si tienes varios archivos de flujo de trabajo en tu repositorio. Por favor, identifica la ejecución del flujo de trabajo correcta verificando el nombre del flujo de trabajo en la barra lateral izquierda o utilizando la lista de ejecuciones del flujo de trabajo en el lado derecho.
Haz clic en la ejecución del flujo de trabajo para ver los registros de ejecución detallados. Verás:
El nombre del flujo de trabajo: "Hello World Workflow" en la parte superior
El nombre del trabajo (job): "build" en la barra lateral izquierda
La ejecución del paso (step): Haz clic en el trabajo "build" para expandirlo, luego haz clic en el paso "Say Hello"
La salida: Deberías ver la salida Hello, World! mostrada en los registros
Esto te proporciona una vista completa de cómo se ejecutó tu flujo de trabajo, incluyendo qué pasos se ejecutaron con éxito y qué salida produjeron. Esto es muy útil para depurar y comprender lo que está haciendo tu flujo de trabajo.
Resumen
En este laboratorio, ha creado con éxito su primer flujo de trabajo de GitHub Actions. Ha aprendido a:
Crear la estructura de directorio .github/workflows requerida.
Definir un flujo de trabajo usando sintaxis YAML.
Establecer el name (nombre) del flujo de trabajo y los eventos de activación usando on.
Definir jobs (trabajos) y steps (pasos) para ejecutar comandos.
Confirmar (commit) y subir (push) el flujo de trabajo a un repositorio.
Estos son los componentes fundamentales para crear pipelines (tuberías) de CI/CD complejas que pueden construir, probar e implementar (deploy) su software automáticamente.