Github Cli
Si trabajas en entornos de DevOps o gestionas proyectos colaborativos en GitHub, sabrás que la eficiencia y la automatización son clave para mantener flujos de trabajo ágiles. GitHub no solo permite almacenar y gestionar código, sino que también ofrece herramientas para automatizar tareas, gestionar repositorios y optimizar procesos de integración y despliegue continuo.
Por eso, vamos a conocer a GitHub CLI, la herramienta oficial de línea de comandos de GitHub.
Alcance de esta guía
En este artículo, vamos a explorar qué es GitHub CLI. Los objetivos son:
- Comprender qué es GitHub CLI y por qué es útil en flujos DevOps.
- Instalar GitHub CLI en diferentes sistemas operativos.
- Automatizar tareas comunes en repositorios de GitHub desde la línea de comandos.
- Integrar GitHub CLI en pipelines de CI/CD para optimizar tu flujo de trabajo.
¿Qué es Github CLI?
GitHub CLI es una interfaz de línea de comandos diseñada para facilitar la interacción con GitHub sin necesidad de abrir un navegador. Al utilizar la terminal, puedes realizar diversas acciones que normalmente requerirían acceder a la interfaz web, lo que ahorra tiempo y te permite realizar tareas de manera más rápida.
Con GitHub CLI, puedes gestionar repositorios, crear pull requests, revisar issues, visualizar el historial de commits, interactuar con GitHub Actions, y mucho más, todo directamente desde tu terminal.
mcherrera@dev:~$ gh help
Work seamlessly with GitHub from the command line.
USAGE
gh <command> <subcommand> [flags]
CORE COMMANDS
auth: Authenticate gh and git with GitHub
gist: Manage gists
repo: Manage repositories
...
GITHUB ACTIONS COMMANDS
cache: Manage GitHub Actions caches
run: View details about workflow runs
workflow: View details about GitHub Actions workflows
...
EXAMPLES
$ gh issue create
...
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
Instalación
Instalar GitHub CLI es bastante sencillo y está disponible para diferentes sistemas operativos, incluyendo macOS, Windows y Linux.
En Windows, gh está disponible a través de WinGet, Chocolatey, y en forma de instalador MSI en la página de releases:
- WinGet:
1
winget install --id GitHub.cli- Chocolatey:
1
choco install gh- Los binarios precompilados se pueden descargar aquí:
Cargando la versión más reciente de Windows...
Si usas Homebrew, puedes instalar
ghcon el siguiente comando:1
brew install ghSi usas Linux, puedes instalar
ghdirectamente desde los repositorios de tu distribución:- Para distribuciones basadas en Debian/Ubuntu:
1
sudo apt install gh - Para distribuciones basadas en Red Hat
1
sudo yum install gh
- Para distribuciones basadas en Debian/Ubuntu:
Concluida la instalación, puedes verificar su funcionamiento con el comando gh --version:
mcherrera@dev:~$ gh --version
gh version 2.78.0 (2025-01-21)
https://github.com/cli/cli/releases/tag/v2.78.0
Autenticación
Después de instalar GitHub CLI, necesitamos conectarlo con nuestra GitHub.
Para hacer esto, previamente debes tener tu cuenta de GitHub con la sesión abierta para facilitar las acciones que nos indicará el comando para autenticarnos.
En la terminal o símbolo de sistema escribe el siguiente comando:
1
gh auth login
Esto iniciará un asistente que nos irá preguntando qué deseamos hacer. A continuación, puedes revisar una simulación:
mcherrera@dev:~$ gh auth login
? What account do you want to log into? [Use arrows to move, type to filter]
> GitHub.com
GitHub Enterprise Server
? What is your preferred protocol for Git operations on this host? [Use arrows to move, type to filter]
HTTPS
> SSH
? Upload your SSH public key to your GitHub account? [Use arrows to move, type to filter]
/home/mcherrera/.ssh/id_ed25519.pub
> /home/mcherrera/.ssh/id_rsa.pub
Skip
? Title for your SSH key: (GitHub CLI) No escribas nada. Si la llave seleccionada se encuentra registrada en GitHub, gh la detectará y no intentará subirla de nuevo.
? How would you like to authenticate GitHub CLI? [Use arrows to move, type to filter]
> Login with a web browser
Paste an authentication token
! First copy your one-time code: 11F7-CC2A
Press Enter to open github.com in your browser...
Demostración:
Principales funciones de GitHub CLI
1. Clonar Repositorios
Aunque Git ya permite clonar repositorios desde la línea de comandos, con gh puedes hacer esto aún más rápido.
1
gh repo clone <usuario>/<repositorio>
2. Gestionar Pull Requests
Puedes crear, listar, revisar y hacer merge de pull requests sin necesidad de entrar al navegador. Algunos comandos útiles son:
- Crear un Pull Request:
1
gh pr create --base main --head <tu-rama> --title "Título del PR" --body "Descripción detallada"
- Ver los Pull Requests abiertos:
1
gh pr list
- Revisar un Pull Request:
1
gh pr view <ID-del-PR>
3. Gestionar Issues
Si trabajas en proyectos con varios colaboradores, gestionar issues desde la terminal puede ser muy eficiente.
- Crear un Issue:
1
gh issue create --title "Nuevo Bug" --body "Descripción del problema"
- Ver Issues Abiertos:
1
gh issue list
- Cerrar un Issue:
1
gh issue close <ID-del-Issue>
4. Visualizar GitHub Actions
Si tu proyecto usa GitHub Actions para CI/CD, puedes visualizar el estado de tus workflows directamente desde la terminal.
1
gh run list
Automatización
En los pipelines modernos de CI/CD, automatizar tareas repetitivas es clave para mantener la consistencia, mejorar la eficiencia y reducir errores humanos. Con GitHub CLI, es posible interactuar con repositorios y ejecutar acciones directamente desde scripts y pipelines, evitando depender de la interfaz web.
Integrando GitHub CLI en pipelines de CI/CD
GitHub CLI se integra fácilmente en pipelines para automatizar tareas como la creación de releases, pull requests o issues. Esto permite que las operaciones de tu flujo de trabajo sean más consistentes y reproducibles, además de auditarse de manera sencilla.
Antes de ver los ejemplos prácticos, los principales objetivos de esta integración son:
- Ejecutar acciones de GitHub sin depender de la interfaz web.
- Automatizar la creación y gestión de issues, pull requests y releases.
- Mantener un flujo de trabajo reproducible y auditado.
1. Crear un release automáticamente
Cuando tu pipeline genera un nuevo build, puedes crear un release y subir los assets de manera automática usando un script dedicado (ci-create-release.sh).
Ubicación del script:
1
2
3
📂 repo
└── 📂 ci-scripts
└── ci-create-release.sh
Contenido del script:
1
2
3
4
5
6
7
8
9
10
11
VERSION="v2.83.1"
REPO="tu-usuario/tu-repo"
# Crear release y subir assets del build
gh release create $VERSION ./build/*.zip \
--repo $REPO \
--title "Release $VERSION" \
--notes "Actualización automática desde CI/CD"
# Publicar release draft
gh release edit $VERSION --draft=false --repo $REPO
Este script puede ejecutarse localmente para pruebas o directamente desde un pipeline.
Integración con GitHub Actions:
Para automatizar el release al hacer push a la rama main o al crear un tag, creamos un workflow en .github/workflows/release.yml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
name: CI/CD Release
on:
push:
branches:
- main
tags:
- 'v*.*.*'
jobs:
create-release:
runs-on: ubuntu-latest
steps:
# Clonar el repositorio
- name: Checkout repository
uses: actions/checkout@v3
# Configurar GitHub CLI
- name: Set up GitHub CLI
uses: cli/gh-actions@v2
with:
version: latest
# Autenticación con token seguro
- name: Authenticate GH CLI
run: gh auth login --with-token < ${{ secrets.GITHUB_TOKEN }}
# Ejecutar el script de release
- name: Ejecutar script de release
run: ./ci-scripts/ci-create-release.sh
Cómo funciona:
- Checkout: Se clona el repositorio para que el script tenga acceso a los builds y archivos.
- Instalación de GitHub CLI: Se asegura que
ghesté disponible en el runner. - Autenticación segura:
GITHUB_TOKENpermite aghinteractuar con tu repositorio sin exponer credenciales. - Ejecución del script: Se llama a
ci-create-release.sh, que crea el release y sube los assets filtrando solo los builds de Windows,.msiy.zip.
De esta manera, tu pipeline automatiza por completo la creación de releases, manteniendo un flujo reproducible y seguro.
Cuando tu pipeline genera un nuevo build, puedes crear un release y subir los assets de manera automática:
1
2
3
4
5
6
7
8
9
10
11
VERSION="v2.83.1"
REPO="tuusuario/tu-repo"
# Crear release y subir assets del build
gh release create $VERSION ./build/*.zip \
--repo $REPO \
--title "Release $VERSION" \
--notes "Actualización automática desde CI/CD"
# Publicar release draft
gh release edit $VERSION --draft=false --repo $REPO
Recuerda darle permisos de ejecución:
1chmod +x ci-create-release.sh
Ejemplo 2: Abrir un pull request automáticamente
1
2
3
4
5
6
7
8
9
git checkout -b update-dependencies
git add .
git commit -m "Actualización automática de dependencias"
git push origin update-dependencies
gh pr create --title "Update dependencies" \
--body "Actualización automática desde CI/CD" \
--base main \
--head update-dependencies
Ejemplo 3: Crear issues desde la pipeline
1
2
3
gh issue create --title "Tests fallando en CI" \
--body "Se detectaron fallos en los tests automatizados." \
--label bug
Si te interesa saber más sobre esta herramienta, no olvides revisar su documentación:
También te comparto una hoja de referencia rápida para que tengas siempre contigo. 👇

