{"id":21991642,"url":"https://github.com/rickcontreras/githubactions","last_synced_at":"2026-06-19T01:31:43.011Z","repository":{"id":274601008,"uuid":"823408238","full_name":"RickContreras/GitHubActions","owner":"RickContreras","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-03T02:21:33.000Z","size":48,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-09T22:22:57.874Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RickContreras.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-03T01:39:03.000Z","updated_at":"2024-07-03T02:21:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"ad385686-cbd8-4a72-a604-893aa6d86095","html_url":"https://github.com/RickContreras/GitHubActions","commit_stats":null,"previous_names":["rickcontreras/githubactions"],"tags_count":0,"template":false,"template_full_name":"platzi/curso-github-actions","purl":"pkg:github/RickContreras/GitHubActions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RickContreras%2FGitHubActions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RickContreras%2FGitHubActions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RickContreras%2FGitHubActions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RickContreras%2FGitHubActions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RickContreras","download_url":"https://codeload.github.com/RickContreras/GitHubActions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RickContreras%2FGitHubActions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34514282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T20:10:22.975Z","updated_at":"2026-06-19T01:31:42.772Z","avatar_url":"https://github.com/RickContreras.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  \u003c\u003c\u003c Author notes: Header of the course \u003e\u003e\u003e\n  Read \u003chttps://skills.github.com/quickstart\u003e for more information about how to build courses using this template.\n  Include a 1280×640 image, course name in sentence case, and a concise description in emphasis.\n  In your repository settings: enable template repository, add your 1280×640 social image, auto delete head branches.\n  Next to \"About\", add description \u0026 tags; disable releases, packages, \u0026 environments.\n  Add your open source license, GitHub uses Creative Commons Attribution 4.0 International.\n--\u003e\n\n# Curso Básico de GitHub Actions\n\n_Aprende los conceptos básicos para crear tu primer flujo de CI/CD para tus proyectos con GitHub Actions_\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Start of the course \u003e\u003e\u003e\n  Include start button, a note about Actions minutes,\n  and tell the learner why they should take the course.\n  Each step should be wrapped in \u003cdetails\u003e/\u003csummary\u003e, with an `id` set.\n  The start \u003cdetails\u003e should have `open` as well.\n  Do not use quotes on the \u003cdetails\u003e tag attributes.\n--\u003e\n\n\u003cdetails id=0\u003e\n\u003csummary\u003e\u003ch2\u003eBienvenido\u003c/h2\u003e\u003c/summary\u003e\n\n¡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 :rocket:.\n\n- **¿Para quíen es este curso?**: Desarrolladores backend, frontend y Full Stack; DevOps; SREs, Estudiantes, Líderes de equipo, cualquier usuario de GitHub.\n- **¿Qué aprenderás?**: Aprenderás a automatizar los procesos de compilación, pruebas y despliegue de sus proyectos.\n- **¿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).\n- **Prerequisitos**: Conocimientos básicos sobre Git y GitHub (realizar commits y push; crear pull requests e issues; agregar etiquetas).\n- **Duración**: Este curso tendrá 5 pasos y lo podrás terminar en menos de 2 horas.\n\n## ¿Cómo iniciar el curso?\n\n1. Haz click derecho en **Start course** y abre el enlace en una nueva pestaña.\n   \u003cbr /\u003e[![start-course](https://user-images.githubusercontent.com/1221423/218596841-0645fe1a-4aaf-4f51-9ab3-8aa2d3fdd487.svg)](https://github.com/platzi/curso-github-actions/generate)\n2. En la nueva pestaña, llena los campos para crear un nuevo repositorio.\n   - En owner, elige tu cuenta personal o la de tu organización.\n   - Es recomendado dejar el repositorio como público ya que los privados consumen [minutos que pueden ser cobrados](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions).\n   ![Create a new repository](https://user-images.githubusercontent.com/1221423/218594143-e60462b6-9f2a-4fa3-80de-063ac5429aab.png)\n3. 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.\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Step 1 \u003e\u003e\u003e\n  Choose 3-5 steps for your course.\n  The first step is always the hardest, so pick something easy!\n  Link to docs.github.com for further explanations.\n  Encourage users to open new tabs for steps!\n  TBD-step-1-notes.\n--\u003e\n\n\u003cdetails id=1\u003e\n\u003csummary\u003e\u003ch2\u003ePaso 1: Crea tu primer workflow file\u003c/h2\u003e\u003c/summary\u003e\n\n_¡Bienvenido al \"Curso Básico de GitHub Actions\"! :wave:_\n\nPrimero, aprenderemos los conceptos básicos de GitHub Actions\n\n**¿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.\n\n**¿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.\n\n**¿Qué es un Event?**: Actividad específica en un repositorio, la cual activa una ejecución de un workflow.\n\n**¿Qué es un Job?**: Conjunto de tareas (steps) en un workflow que se ejecutan en el mismo runner.\n\n**¿Qué es un Runner?**: Servidor que ejecuta los workflows. GitHub provee runners de Ubuntu, Windows y MacOS.\n\n**¿Qué es un Step?**: Puede ser: un script/comando de shell o un action que se ejecutará.\n\n**¿Qué es un Action?**: Aplicación personalizada que realiza una tarea compleja repetitiva.\n\n### :keyboard: Actividad: Crea un workflow file\n\n1. Abra una nueva pestaña del navegador y siga los pasos de la segunda pestaña mientras lee las instrucciones de esta pestaña.\n1. 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` y `compare: aprendiendo-github-actions`.\n1. Vaya a la pestaña *Code*.\n1. En el menú desplegable de la rama *main*, haga clic en la rama *aprendiendo-github-actions*.\n1. Agrega un script simple en tu lenguaje de programación preferido (Python, JavaScript, Go, Rust, etc.) que imprima un \"Hola Mundo\".\n1. Navegue a la carpeta `.github/workflows/`, luego seleccione **Add file** y haga clic en **Create new file**.\n1. En el campo **Name your file...**, ingrese `hola-mundo.yml`.\n1. Con lo aprendido hasta el momento, crea un workflow file que corra el archivo del paso anterior que imprime el \"Hola Mundo\".\n1. Espere unos 20 segundos y luego actualice esta página para el siguiente paso.\n\n  \u003cdetails id=1.1\u003e\n  \u003csummary\u003e\u003ch3\u003eAyuda\u003c/h2\u003e\u003c/summary\u003e\n\n  Crea un archivo llamado `hola_mundo.py` en la raiz del repositorio y agrega el siguiente contenido:\n  ```python\n  import os\n\n\n  def main():\n      nombre = os.getenv(\"USERNAME\")\n      print(f\"¡Hola, {nombre} desde GitHub!\")\n\n\n  if __name__ == \"__main__\":\n      main()\n  ```\n\n  Agregue el siguiente contenido al archivo `hola-mundo.yml`:\n  ```yaml\n  name: Aprendiendo GitHub Actions\n  run-name: ¡Estoy aprendiendo GitHub Actions!\n  on: [push]\n  jobs:\n    hola-mundo:\n      runs-on: ubuntu-latest\n      steps:\n        - name: Checkout\n          uses: actions/checkout@v3\n        - name: Definir variable\n          run: echo \"USERNAME=${{ github.actor }}\" \u003e\u003e $GITHUB_ENV\n        - name: Correr script\n          run: python hola_mundo.py\n  ```\n\n    \n  \u003c/details\u003e\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Step 2 \u003e\u003e\u003e\n  Start this step by acknowledging the previous step.\n  Define terms and link to docs.github.com.\n  TBD-step-2-notes.\n--\u003e\n\n\u003cdetails id=2\u003e\n\u003csummary\u003e\u003ch2\u003ePaso 2: Conoce los principales Triggers\u003c/h2\u003e\u003c/summary\u003e\n\n_¡Creaste tu primer Workflow! :tada:_\n\nAhora 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.\n\n**¿Qué eventos exploraremos?**\n\n- push\n- pull_request\n- issues\n- issue_comment\n- workflow_dispatch\n- schedule\n\n### :keyboard: Actividad: Expermienta con los distintos Triggers\n\n1. Vuelve a la rama en que estabamos trabajando (*aprendiendo-github-actions*).\n1. Navegue a la carpeta `.github/workflows/`, luego seleccione **Add file** y haga clic en **Create new file**.\n1. En el campo **Name your file...**, ingrese `triggers.yml`.\n1. Crea un workflow que incluya al menos 3 de los triggers que vimos en la clase.\n1. Espere unos 20 segundos y luego actualice esta página para el siguiente paso.\n\n  \u003cdetails id=1.1\u003e\n  \u003csummary\u003e\u003ch3\u003eAyuda\u003c/h2\u003e\u003c/summary\u003e\n    \n  Agregue el siguiente contenido al archivo `triggers.yml`:\n  ```yaml\n  name: Triggers\n  run-name: ¡Estoy aprendiendo a usar diferentes Triggers!\n  on:\n    push:\n      branches:\n        - master\n    pull_request:\n      types: [opened, synchronize, reopened]\n      paths:\n        - '**.py'\n    issues:\n      types:\n        - labeled\n    workflow_dispatch:\n      inputs:\n        lenguaje_favorito:\n          description: 'Lenguaje favorito'\n          default: Python\n          required: true\n          type: choice\n          options:\n          - Python\n          - JavaScript\n          - Go\n        nombre:\n          description: 'Tu nombre'\n          required: true\n          default: Juan\n          type: string\n    schedule:\n      - cron:  '15 22 * * *'\n  jobs:\n    hola-mundo-manual:\n      runs-on: ubuntu-latest\n      steps:\n        - name: Checkout\n          uses: actions/checkout@v3\n        - name: Definir nombre\n          run: echo \"USERNAME=${{ inputs.nombre }}\" \u003e\u003e $GITHUB_ENV\n        - name: Definir lenguaje\n          run: echo \"LANGUAGE=${{ inputs.lenguaje_favorito }}\" \u003e\u003e $GITHUB_ENV\n        - name: Correr script\n          run: python hola_lenguaje.py\n    hola-mundo:\n      if: ${{ github.event_name != 'workflow_dispatch' }}\n      runs-on: ubuntu-latest\n      steps:\n        - name: Checkout\n          uses: actions/checkout@v3\n        - name: Definir variable\n          run: echo \"USERNAME=${{ github.actor }}\" \u003e\u003e $GITHUB_ENV\n        - name: Correr script\n          run: python hola_mundo.py\n\n  ```\n  \u003c/details\u003e\n\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Step 3 \u003e\u003e\u003e\n  Start this step by acknowledging the previous step.\n  Define terms and link to docs.github.com.\n  TBD-step-3-notes.\n--\u003e\n\n\u003cdetails id=3\u003e\n\u003csummary\u003e\u003ch2\u003ePaso 3: Aprende a usar Expresiones\u003c/h2\u003e\u003c/summary\u003e\n\n_¡Buen trabajo usando los distintos eventos para lanzar nuevos workflows! :sparkles:_\n\nAhora 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.\n\n**¿Qué son las expresiones?**: Es una forma de configurar variables de entorno y acceder al contexto. Usan una sintaxis especial ${{ \u003cexpresión\u003e }} \n\nPuedes combinar valores literales, referencias de contexto y funciones usando operadores o condicionales.\n\n### :keyboard: Actividad: Crea tus primeras Expresiones\n\n1. Vuelve a la rama en que estabamos trabajando (*aprendiendo-github-actions*).\n1. Navegue a la carpeta `.github/workflows/`, luego seleccione **Add file** y haga clic en **Create new file**.\n1. En el campo **Name your file...**, ingrese `expresiones.yml`.\n1. Crea un workflow que incluya al menos 3 expresiones de las vistas en clase.\n1. Espere unos 20 segundos y luego actualice esta página para el siguiente paso.\n\n  \u003cdetails id=1.1\u003e\n  \u003csummary\u003e\u003ch3\u003eAyuda\u003c/h2\u003e\u003c/summary\u003e\n    \n  Agregue el siguiente contenido al archivo `expresiones.yml`:\n  ```yaml\n  name: Expresiones\n  run-name: ¡Estoy aprendiendo a usar Expresiones!\n  on:\n    workflow_dispatch:\n      inputs:\n        edad:\n          description: 'Edad'\n          required: true\n          type: integer\n        nombre:\n          description: 'Tu nombre'\n          required: true\n          default: 'Juan'\n          type: string\n  jobs:\n    mayor:\n      if: ${{ inputs.edad \u003e= 18 }} \n      runs-on: ubuntu-latest\n      steps:\n        - name: Correr script\n          run: echo ${{ inputs.nombre }} es mayor de edad\n    menor:\n      if: ${{ inputs.edad \u003c 18 }} \n      runs-on: ubuntu-latest\n      steps:\n        - name: Correr script\n          run: echo ${{ inputs.nombre }} es menor de edad\n  ```\n  \u003c/details\u003e\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Step 4 \u003e\u003e\u003e\n  Start this step by acknowledging the previous step.\n  Define terms and link to docs.github.com.\n  TBD-step-4-notes.\n--\u003e\n\n\u003cdetails id=4\u003e\n\u003csummary\u003e\u003ch2\u003ePaso 4: Aprende a usar los distintos Contextos\u003c/h2\u003e\u003c/summary\u003e\n\n_¡Excelente trabajo con el uso de Expresiones! :partying_face:_\n\nComo 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.\n\n**¿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.\n\nLos más usados son:\n\n- github\n- env\n- vars\n- job\n- steps\n- runner\n- secrets\n- inputs\n\n### :keyboard: Actividad: Usa los diferentes contextos\n\n1. Vuelve a la rama en que estabamos trabajando (*aprendiendo-github-actions*).\n1. Navegue a la carpeta `.github/workflows/`, luego seleccione **Add file** y haga clic en **Create new file**.\n1. En el campo **Name your file...**, ingrese `contextos.yml`.\n1. Crea un workflow que incluya el uso de alguno de los contextos que vimos en clase.\n1. Espere unos 20 segundos y luego actualice esta página para el siguiente paso.\n\n  \u003cdetails id=1.1\u003e\n  \u003csummary\u003e\u003ch3\u003eAyuda\u003c/h2\u003e\u003c/summary\u003e\n    \n  Agregue el siguiente contenido al archivo `contextos.yml`:\n  ```yaml\n  name: Contexto\n  run-name: ¡Estoy aprendiendo a usar Contextos!\n  on: push\n  jobs:\n    check-main:\n      if: ${{ github.ref == 'refs/heads/main' }}\n      runs-on: ubuntu-latest\n      steps:\n        - run: echo \"Desplegando en la rama $GITHUB_REF\"\n  ```\n  \u003c/details\u003e\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Step 5 \u003e\u003e\u003e\n  Start this step by acknowledging the previous step.\n  Define terms and link to docs.github.com.\n  TBD-step-5-notes.\n--\u003e\n\n\u003cdetails id=5\u003e\n\u003csummary\u003e\u003ch2\u003ePaso 5: Aprende a usar las Variables de Entorno\u003c/h2\u003e\u003c/summary\u003e\n\n¡Ya estás a un paso de terminar! :heart:\n\nEl 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.\n\n**¿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.\n\n### :keyboard: Actividad: Usa variables de entorno en tu workflow\n\n1. Vuelve a la rama en que estabamos trabajando (*aprendiendo-github-actions*).\n1. Navegue a la carpeta `.github/workflows/`, luego seleccione **Add file** y haga clic en **Create new file**.\n1. En el campo **Name your file...**, ingrese `variables.yml`.\n1. Crea un workflow que incluya el uso de variables.\n1. Espere unos 20 segundos y luego actualice esta página para el siguiente paso.\n\n  \u003cdetails id=1.1\u003e\n  \u003csummary\u003e\u003ch3\u003eAyuda\u003c/h2\u003e\u003c/summary\u003e\n    \n  Agregue el siguiente contenido al archivo `variables.yml`:\n  ```yaml\n  name: Saludo usando variables\n  run-name: ¡Estoy aprendiendo a usar Variables!\n  on:\n    workflow_dispatch\n  env:\n    DIA_DE_SEMANA: Lunes\n  jobs:\n    saludo-variables:\n      runs-on: ubuntu-latest\n      env:\n        SALUDO: Hola\n      steps:\n        - name: Saludar\n          run: echo \"$SALUDO, $NOMBRE. Hoy es $DIA_DE_SEMANA!\"\n          env:\n            NOMBRE: Juan\n  ```\n  \u003c/details\u003e\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Finish \u003e\u003e\u003e\n  Review what we learned, ask for feedback, provide next steps.\n--\u003e\n\n\u003cdetails id=X open\u003e\n\u003csummary\u003e\u003ch2\u003eCierre\u003c/h2\u003e\u003c/summary\u003e\n\n_¡Felicidades! haz completado esta sección del Curso Básico de GitHub Actions de Platzi 💚_\n\n\u003cimg src=TBD-celebrate-image alt=celebrate width=300 align=right\u003e\n\nYa 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.\n\nHas aprendido sobre:\n\n- Qué son Worfklows.\n- Qué son Events.\n- Qué son Jobs.\n- Qué son Runners.\n- Qué son Steps.\n- Qué son Ations.\n- Cuál es la sintaxis de un workflow file.\n- Cuáles son los principales Triggers.\n- Uso de Expresiones.\n- Acceder a información de Contextos.\n- El uso de variables para acceder a información reutilizable.\n\n### ¿Qué sigue?\n\n- Puedes crear flujos de Integración Continúa (CI) para tus proyectos.\n- Puedes crear flujos de Despliegue (CD) para tus proyectos.\n- Puedes automatizar todo tipo de tareas en tus repositorios para mantener un mejor orden y control.\n\n\u003c/details\u003e\n\n\u003c!--\n  \u003c\u003c\u003c Author notes: Footer \u003e\u003e\u003e\n  Add a link to get support, GitHub status page, code of conduct, license link.\n--\u003e\n\n---\n\n\u0026copy; 2023 Platzi \u0026bull; [Código de Conducta](https://www.contributor-covenant.org/version/2/1/code_of_conduct/code_of_conduct.md) \u0026bull; [CC-BY-4.0 License](https://creativecommons.org/licenses/by/4.0/legalcode)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickcontreras%2Fgithubactions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frickcontreras%2Fgithubactions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frickcontreras%2Fgithubactions/lists"}