Aprende los conceptos básicos para crear tu primer flujo de CI/CD para tus proyectos con GitHub Actions
¡Bienvenido al Curso Básico de GitHub Actions de Platzi! en este curso aprenderás a realizar flujos de Integración y Despliegue Continúo (CI/CD) para tus proyectos personales, así como automatizar cualquier proceso que que te ayude a impulsar tu flujo de trabajo 🚀.
- ¿Para quíen es este curso?: Desarrolladores backend, frontend y Full Stack; DevOps; SREs, Estudiantes, Líderes de equipo, cualquier usuario de GitHub.
- ¿Qué aprenderás?: Aprenderás a automatizar los procesos de compilación, pruebas y despliegue de sus proyectos.
- ¿Qué construirás?: Una serie de flujos de trabajo que usen los principales conceptos detrás de GitHub Actions (Jobs, Steps, Actions, Variables, Expresiones, entre otros).
- Prerequisitos: Conocimientos básicos sobre Git y GitHub (realizar commits y push; crear pull requests e issues; agregar etiquetas).
- Duración: Este curso tendrá 5 pasos y lo podrás terminar en menos de 2 horas.
- Haz click derecho en Start course y abre el enlace en una nueva pestaña.
- En la nueva pestaña, llena los campos para crear un nuevo repositorio.
- En owner, elige tu cuenta personal o la de tu organización.
- Es recomendado dejar el repositorio como público ya que los privados consumen minutos que pueden ser cobrados.
- Después de que el nuevo repositorio ha sido creado, espera por cerca de 20 segundos; luego, recarga la página. Sigue los pasos que aparezcan en el README del repositorio.
¡Bienvenido al "Curso Básico de GitHub Actions"! 👋
Primero, aprenderemos los conceptos básicos de GitHub Actions
¿Qué es GitHub Actions?: Es una plataforma de integración y despliegue continuo (CI/CD) que permite automatizar procesos de compilación, pruebas y despliegue.
¿Qué es un Workflow?: Es un proceso automatizado configurable que ejecutará uno o más jobs. Se define como un archivo YAML en el directorio .github/workflows de tu repositorio y se ejecutará cuando lo active un evento.
¿Qué es un Event?: Actividad específica en un repositorio, la cual activa una ejecución de un workflow.
¿Qué es un Job?: Conjunto de tareas (steps) en un workflow que se ejecutan en el mismo runner.
¿Qué es un Runner?: Servidor que ejecuta los workflows. GitHub provee runners de Ubuntu, Windows y MacOS.
¿Qué es un Step?: Puede ser: un script/comando de shell o un action que se ejecutará.
¿Qué es un Action?: Aplicación personalizada que realiza una tarea compleja repetitiva.
- Abra una nueva pestaña del navegador y siga los pasos de la segunda pestaña mientras lee las instrucciones de esta pestaña.
- Cree un Pull Request para ver todos los cambios que realizará a lo largo de este curso. Haga clic en la pestaña Pull Requests, haga clic en New Pull Request, establezca
base: main
ycompare: aprendiendo-github-actions
. - Vaya a la pestaña Code.
- En el menú desplegable de la rama main, haga clic en la rama aprendiendo-github-actions.
- Agrega un script simple en tu lenguaje de programación preferido (Python, JavaScript, Go, Rust, etc.) que imprima un "Hola Mundo".
- Navegue a la carpeta
.github/workflows/
, luego seleccione Add file y haga clic en Create new file. - En el campo Name your file..., ingrese
hola-mundo.yml
. - Con lo aprendido hasta el momento, crea un workflow file que corra el archivo del paso anterior que imprime el "Hola Mundo".
- Espere unos 20 segundos y luego actualice esta página para el siguiente paso.
Crea un archivo llamado hola_mundo.py
en la raiz del repositorio y agrega el siguiente contenido:
import os
def main():
nombre = os.getenv("USERNAME")
print(f"¡Hola, {nombre} desde GitHub!")
if __name__ == "__main__":
main()
Agregue el siguiente contenido al archivo hola-mundo.yml
:
name: Aprendiendo GitHub Actions
run-name: ¡Estoy aprendiendo GitHub Actions!
on: [push]
jobs:
hola-mundo:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Definir variable
run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV
- name: Correr script
run: python hola_mundo.py
¡Creaste tu primer Workflow! 🎉
Ahora que conoces los componentes básicos de un workflow en GitHub Actions podemos empezar a explorar nuevos conceptos. El primero será ver los principales eventos o Triggers para lanzar un nuevo workflow.
¿Qué eventos exploraremos?
- push
- pull_request
- issues
- issue_comment
- workflow_dispatch
- schedule
- Vuelve a la rama en que estabamos trabajando (aprendiendo-github-actions).
- Navegue a la carpeta
.github/workflows/
, luego seleccione Add file y haga clic en Create new file. - En el campo Name your file..., ingrese
triggers.yml
. - Crea un workflow que incluya al menos 3 de los triggers que vimos en la clase.
- Espere unos 20 segundos y luego actualice esta página para el siguiente paso.
Agregue el siguiente contenido al archivo triggers.yml
:
name: Triggers
run-name: ¡Estoy aprendiendo a usar diferentes Triggers!
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
paths:
- '**.py'
issues:
types:
- labeled
workflow_dispatch:
inputs:
lenguaje_favorito:
description: 'Lenguaje favorito'
default: Python
required: true
type: choice
options:
- Python
- JavaScript
- Go
nombre:
description: 'Tu nombre'
required: true
default: Juan
type: string
schedule:
- cron: '15 22 * * *'
jobs:
hola-mundo-manual:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Definir nombre
run: echo "USERNAME=${{ inputs.nombre }}" >> $GITHUB_ENV
- name: Definir lenguaje
run: echo "LANGUAGE=${{ inputs.lenguaje_favorito }}" >> $GITHUB_ENV
- name: Correr script
run: python hola_lenguaje.py
hola-mundo:
if: ${{ github.event_name != 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Definir variable
run: echo "USERNAME=${{ github.actor }}" >> $GITHUB_ENV
- name: Correr script
run: python hola_mundo.py
¡Buen trabajo usando los distintos eventos para lanzar nuevos workflows! ✨
Ahora que conoces como lanzar distintos workflows con los principales tipos de eventos es importante sacar provecho del uso de Expresiones en nuestros workflow files para obtener mayor versatilidad y opciones.
¿Qué son las expresiones?: Es una forma de configurar variables de entorno y acceder al contexto. Usan una sintaxis especial ${{ <expresión> }}
Puedes combinar valores literales, referencias de contexto y funciones usando operadores o condicionales.
- Vuelve a la rama en que estabamos trabajando (aprendiendo-github-actions).
- Navegue a la carpeta
.github/workflows/
, luego seleccione Add file y haga clic en Create new file. - En el campo Name your file..., ingrese
expresiones.yml
. - Crea un workflow que incluya al menos 3 expresiones de las vistas en clase.
- Espere unos 20 segundos y luego actualice esta página para el siguiente paso.
Agregue el siguiente contenido al archivo expresiones.yml
:
name: Expresiones
run-name: ¡Estoy aprendiendo a usar Expresiones!
on:
workflow_dispatch:
inputs:
edad:
description: 'Edad'
required: true
type: integer
nombre:
description: 'Tu nombre'
required: true
default: 'Juan'
type: string
jobs:
mayor:
if: ${{ inputs.edad >= 18 }}
runs-on: ubuntu-latest
steps:
- name: Correr script
run: echo ${{ inputs.nombre }} es mayor de edad
menor:
if: ${{ inputs.edad < 18 }}
runs-on: ubuntu-latest
steps:
- name: Correr script
run: echo ${{ inputs.nombre }} es menor de edad
¡Excelente trabajo con el uso de Expresiones! 🥳
Como ya vimos, mediante el uso de Expresiones podemos acceder a información de formá dinámica durante la ejecución de nuestros workflows. Una de las fuentes más importantes de información usada es la que nos brindan los contextos.
¿Qué son los contextos?: Es una manera de acceder a información acerca de las ejecuciones de workflows, variables, entornos de runners, jobs y steps. Cada contexto es un objeto que contiene propiedades.
Los más usados son:
- github
- env
- vars
- job
- steps
- runner
- secrets
- inputs
- Vuelve a la rama en que estabamos trabajando (aprendiendo-github-actions).
- Navegue a la carpeta
.github/workflows/
, luego seleccione Add file y haga clic en Create new file. - En el campo Name your file..., ingrese
contextos.yml
. - Crea un workflow que incluya el uso de alguno de los contextos que vimos en clase.
- Espere unos 20 segundos y luego actualice esta página para el siguiente paso.
¡Ya estás a un paso de terminar! ❤️
El uso de variables de entorno es lo único que te falta por aprender de los principales conceptos y componentes de GitHub Actions, así que vamos a por ello.
¿Qué son las variables?: Son una manera de almacenar y reutilizar información de configuración no confidencial. Tales como datos de configuración, como marcas del compilador, nombres de usuario o nombres de servidor como variables.
- Vuelve a la rama en que estabamos trabajando (aprendiendo-github-actions).
- Navegue a la carpeta
.github/workflows/
, luego seleccione Add file y haga clic en Create new file. - En el campo Name your file..., ingrese
variables.yml
. - Crea un workflow que incluya el uso de variables.
- Espere unos 20 segundos y luego actualice esta página para el siguiente paso.
Agregue el siguiente contenido al archivo variables.yml
:
name: Saludo usando variables
run-name: ¡Estoy aprendiendo a usar Variables!
on:
workflow_dispatch
env:
DIA_DE_SEMANA: Lunes
jobs:
saludo-variables:
runs-on: ubuntu-latest
env:
SALUDO: Hola
steps:
- name: Saludar
run: echo "$SALUDO, $NOMBRE. Hoy es $DIA_DE_SEMANA!"
env:
NOMBRE: Juan
¡Felicidades! haz completado esta sección del Curso Básico de GitHub Actions de Platzi 💚
Ya conoces los principales conceptos para crear workflows que te sirvan para automatizar todo tipo de tareas incluidas las de integración y despliegue continúo.
Has aprendido sobre:
- Qué son Worfklows.
- Qué son Events.
- Qué son Jobs.
- Qué son Runners.
- Qué son Steps.
- Qué son Ations.
- Cuál es la sintaxis de un workflow file.
- Cuáles son los principales Triggers.
- Uso de Expresiones.
- Acceder a información de Contextos.
- El uso de variables para acceder a información reutilizable.
- Puedes crear flujos de Integración Continúa (CI) para tus proyectos.
- Puedes crear flujos de Despliegue (CD) para tus proyectos.
- Puedes automatizar todo tipo de tareas en tus repositorios para mantener un mejor orden y control.
© 2023 Platzi • Código de Conducta • CC-BY-4.0 License