Skip to main content

Automatización de tareas con la CLI de Copilot y Acciones de GitHub

Integre CLI de GitHub Copilot dentro de los flujos de trabajo de GitHub Actions.

¿Quién puede utilizar esta característica?

CLI de GitHub Copilot está disponible con todos los planes Copilot. Si recibes Copilot de una organización, la directiva de CLI de Copilot debe estar habilitada en la configuración de la organización.

Puede ejecutar CLI de GitHub Copilot en un flujo de trabajo GitHub Actions para automatizar tareas impulsadas por inteligencia artificial como parte de su proceso de CI/CD. Por ejemplo, puede resumir la actividad reciente del repositorio, generar informes o estructurar el contenido del proyecto. CLI de GitHub Copilot se ejecuta en el runner de Actions como cualquier otra herramienta de CLI, por lo que puede instalarlo durante un trabajo e invocarlo desde los pasos del flujo de trabajo.

Uso de CLI de Copilot en un flujo de trabajo de Acciones

Puede definir un trabajo en un flujo de trabajo GitHub Actions que: instala CLI de Copilot en el ejecutor, lo autentica, lo ejecuta en modo mediante programación y, a continuación, controla los resultados. El modo de programación está diseñado para scripts y automatización y permite pasar un mensaje de forma no interactiva.

Los flujos de trabajo pueden seguir este patrón: 1. Desencadenador: inicie el flujo de trabajo según una programación, en respuesta a los eventos del repositorio o manualmente. 1. Configuración: código de desprotección, configuración del entorno. 1. Instalación: instale CLI de GitHub Copilot en el ejecutor. 1. Autenticación: asegúrese de que la CLI tiene los permisos necesarios para acceder al repositorio y realizar cambios. 1. Ejecute CLI de Copilot: Invoque CLI de Copilot con un mensaje que describa la tarea que desea automatizar.

Flujo de trabajo de ejemplo

El siguiente flujo de trabajo genera detalles de los cambios realizados hoy en la rama predeterminada del repositorio y muestra estos detalles como resumen de la ejecución del flujo de trabajo.

YAML
name: Daily summary
on:
  workflow_dispatch:
  # Run this workflow daily at 5:30pm UTC
  schedule:
    - cron: '30 17 * * *'
permissions:
  contents: read
jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0

      - name: Set up Node.js environment
        uses: actions/setup-node@v4

      - name: Install Copilot CLI
        run: npm install -g @github/copilot

      - name: Run Copilot CLI
        env:
          COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        run: |
          copilot -p "Review the git log for this repository and write a bullet point summary of all code changes that were made today, with links to the relevant commit on GitHub. Above the bullet list give a description (max 100 words) summarizing the changes made. Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
          cat summary.md >> "$GITHUB_STEP_SUMMARY"

En las secciones siguientes se explica cada parte de este flujo de trabajo.

Trigger

En este ejemplo, el flujo de trabajo se ejecuta según una programación diaria y también se puede desencadenar manualmente.

El workflow_dispatch desencadenador le permite ejecutar el flujo de trabajo manualmente desde la pestaña Acciones del repositorio en GitHub, lo que resulta útil al probar los cambios en la configuración del mensaje o del flujo de trabajo.

El schedule desencadenador ejecuta el flujo de trabajo automáticamente en un momento especificado mediante la sintaxis cron.

YAML
on:
  # Allows manual triggering of this workflow
  workflow_dispatch:
  # Run this workflow daily at 11:55pm UTC
  schedule:
    - cron: '55 23 * * *'

Configuración

Configure el trabajo para que CLI de Copilot pueda acceder al repositorio y ejecutarse en el ejecutor de acciones. Esto permite que CLI de Copilot analice el contexto del repositorio al generar el resumen diario.

El bloque permissions especifica el ámbito concedido a la función predefinida GITHUB_TOKEN. Dado que este flujo de trabajo lee los datos del repositorio e imprime un resumen en los registros, requiere contents: read.

YAML
permissions:
  contents: read
jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0

Instalación

Instale CLI de Copilot en el ejecutor para que el flujo de trabajo pueda invocarlo como un comando. Puede instalar CLI de GitHub Copilot mediante cualquier método de instalación compatible. Para obtener una lista completa de las opciones de instalación, consulte Instalación de GitHub Copilot CLI.

En este ejemplo, el flujo de trabajo instala CLI de GitHub Copilot globalmente con npm.

YAML
- name: Set up Node.js environment
  uses: actions/setup-node@v4

- name: Install Copilot CLI
  run: npm install -g @github/copilot

Autenticar

Para permitir que CLI de Copilot se ejecute en un ejecutor de acciones, debe autenticar una cuenta de usuario de GitHub con una licencia válida Copilot.

          **Paso 1: Crear un personal access token (PAT) con el permiso "Solicitudes de Copilot":**
  1. Acceda a su configuración personal para crear un fine-grained personal access token: github.com/settings/personal-access-tokens/new.

  2. Cree un nuevo PAT con el permiso "Solicitudes de Copilot".

  3. Copie el valor del token.

           **Paso 2: Almacenar el PAT como secreto del repositorio de acciones:**
    
  4. En el repositorio, vaya a Configuración > Secretos y variables > Acciones y haga clic en Nuevo secreto de repositorio.

  5. Asigne al secreto un nombre que usará en el flujo de trabajo. En este ejemplo se usa PERSONAL_ACCESS_TOKEN como nombre del secreto.

  6. Pegue el valor del token en el campo "Secreto" y haga clic en Agregar secreto.

El flujo de trabajo establece una variable de entorno especial con el valor del secreto del repositorio. CLI de Copilot admite varias variables de entorno especiales para la autenticación. En este ejemplo, el proceso de trabajo utiliza COPILOT_GITHUB_TOKEN, que es específico de CLI de Copilot y permite establecer permisos distintos para Copilot de los que se podrían usar en otra parte con la variable de entorno integrada GITHUB_TOKEN.

YAML
- name: Run Copilot CLI
  env:
   COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

Ejecutar CLI de Copilot

Use copilot -p PROMPT [OPTIONS] para ejecutar la CLI mediante programación y salir cuando se complete el comando.

La CLI imprime su respuesta en la salida estándar, que se registra en el log durante la ejecución del flujo de trabajo de Actions. Sin embargo, para facilitar el acceso a los detalles de los cambios, en este ejemplo se agrega esta información al resumen de la ejecución del flujo de trabajo.

YAML
  run: |
    copilot -p "Review the git log for this repository and write a bullet point summary of all code changes that were made today, with links to the relevant commit on GitHub. Above the bullet list give a description (max 100 words) summarizing the changes made. Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
    cat summary.md >> "$GITHUB_STEP_SUMMARY"

En este ejemplo se usan varias opciones después del uso de la línea de comandos de la CLI:

  •         `--allow-tool='shell(git:*)'` permite que Copilot ejecute comandos de Git para analizar el historial del repositorio. Esto es necesario para generar el resumen de los cambios recientes.
    
  •         `--allow-tool='write'` permite que Copilot escriba el resumen generado en un archivo del ejecutor.
    
  •         `--no-ask-user` impide que la CLI solicite la entrada del usuario, lo que es importante cuando se ejecuta en un flujo de trabajo automatizado en el que no hay ningún usuario que responda a las solicitudes de entrada adicionales.
    

Pasos siguientes

Después de confirmar que el flujo de trabajo genera un resumen de los cambios, puede adaptar el mismo patrón a otras tareas de automatización. Empiece por cambiar la solicitud que pasa a copilot -p PROMPT y decida lo que desea hacer con el resultado. Por ejemplo, podría:

  • Cree una solicitud de incorporación de cambios para actualizar un archivo de registro de cambios en el repositorio con los cambios del día.
  • Envíe por correo electrónico el resumen a los mantenedores del repositorio.

Lectura adicional

  •         [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)
    
  •         [AUTOTITLE](/actions)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-cli/automate-copilot-cli/run-cli-programmatically)