Skip to main content

Automatizando tarefas com a CLI do Copilot e o GitHub Actions

Integre CLI do GitHub Copilot aos seus fluxos de trabalho GitHub Actions.

Quem pode usar esse recurso?

CLI do GitHub Copilot está disponível com todos os Copilot planos. Se você receber Copilot de uma organização, a CLI do Copilot política deverá ser habilitada nas configurações da organização.

Você pode executar CLI do GitHub Copilot em um fluxo de trabalho GitHub Actions para automatizar tarefas impulsionadas por IA como parte do seu processo de CI/CD. Por exemplo, você pode resumir a atividade recente do repositório, gerar relatórios ou estruturar o conteúdo do projeto. CLI do GitHub Copilot é executado no executor do Actions como qualquer outra ferramenta de CLI, para que você possa instalá-lo durante um trabalho e invocá-lo das etapas do fluxo de trabalho.

Usando CLI do Copilot em um fluxo de trabalho do Actions

Você pode definir um trabalho em um fluxo de trabalho GitHub Actions que: instala CLI do Copilot no executor, autentica-o, executa-o no modo programático e então trata os resultados. O modo programático foi projetado para scripts e automação e permite que você passe um prompt de forma não interativa.

Os fluxos de trabalho podem seguir esse padrão: 1. Gatilho: iniciar o fluxo de trabalho de acordo com uma programação, em resposta a eventos do repositório ou manualmente. 1. Configuração: código de check-out, ambiente de configuração.

  1.           **Instalar**: instalar CLI do GitHub Copilot no executor.
    
  2.        **Autenticar**: verifique se a CLI tem as permissões necessárias para acessar o repositório e fazer alterações.
    
  3.        **Execute o CLI do Copilot**: invoque o CLI do Copilot com uma solicitação que descreve a tarefa que você deseja automatizar.
    

Fluxo de trabalho de exemplo

O fluxo de trabalho a seguir gera detalhes das alterações feitas hoje no branch padrão do repositório e exibe esses detalhes como o resumo da execução do fluxo de trabalho.

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"

As seções a seguir explicam cada parte desse fluxo de trabalho.

Gatilho

Neste exemplo, o fluxo de trabalho é executado diariamente e também pode ser acionado manualmente.

O gatilho workflow_dispatch permite que você execute o fluxo de trabalho manualmente da guia Ações do seu repositório em GitHub, o que é útil ao testar alterações em seu prompt ou configuração de fluxo de trabalho.

O schedule gatilho executa o fluxo de trabalho automaticamente em um momento especificado usando a sintaxe cron.

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

Configuração

Configure a tarefa para que CLI do Copilot possa acessar seu repositório e ser executada no executor de ações. Isso permite que CLI do Copilot analise o contexto do repositório quando gera o resumo diário.

O bloco permissions define o escopo concedido ao GITHUB_TOKEN incorporado. Como esse fluxo de trabalho lê os dados do repositório e imprime um resumo nos logs, ele requer contents: read.

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

Install

Instale CLI do Copilot no executor para que seu fluxo de trabalho possa invocá-lo como um comando. Você pode instalar CLI do GitHub Copilot usando qualquer método de instalação suportado. Para obter uma lista completa das opções de instalação, consulte Instalando o CLI do GitHub Copilot.

Neste exemplo, o fluxo de trabalho instala CLI do GitHub Copilot globalmente com npm.

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

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

Authenticate

Para permitir que o CLI do Copilot seja executado em um executor do Actions, você precisa autenticar uma conta de usuário do GitHub com uma licença válida do Copilot.

          **Passo 1: Crie um personal access token (PAT) com a permissão "Solicitações do Copilot":**
  1. Acesse suas configurações pessoais para criar um fine-grained personal access token: github.com/settings/personal-access-tokens/new.

  2. Crie um novo PAT com a permissão "Solicitações de Copilot".

  3. Copie o valor do token.

           **Etapa 2: Armazene o PAT como um segredo do repositório Actions:**
    
  4. Em seu repositório, vá para Configurações > Segredos e variáveis > Ações e clique em Novo segredo do repositório.

  5. Dê ao segredo um nome que você usará no fluxo de trabalho. Neste exemplo, estamos usando PERSONAL_ACCESS_TOKEN como o nome do segredo.

  6. Cole o valor do token no campo "Segredo" e clique em Adicionar segredo.

O fluxo de trabalho define uma variável de ambiente especial com o valor do segredo do repositório. CLI do Copilot é compatível com diversas variáveis ​​de ambiente especiais para autenticação. Neste exemplo, o fluxo de trabalho usa COPILOT_GITHUB_TOKEN, que é específico para CLI do Copilot e permite definir permissões diferentes para Copilot do que você poderia usar em outros lugares com a variável de ambiente integrada GITHUB_TOKEN.

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

Executar CLI do Copilot

Use copilot -p PROMPT [OPTIONS] para executar a CLI de forma programática e sair quando o comando for concluído.

A CLI imprime sua resposta à saída padrão, que é registrada no log da execução do fluxo de trabalho de Ações. No entanto, para facilitar o acesso dos detalhes das alterações, este exemplo adiciona essas informações ao resumo da execução do fluxo de trabalho.

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"

Este exemplo usa várias opções após o prompt da CLI:

  •         `--allow-tool='shell(git:*)'` permite que Copilot execute comandos Git para analisar o histórico do repositório. Isso é necessário para gerar o resumo das alterações recentes.
    
  •           `--allow-tool='write'` permite que Copilot grave o resumo gerado em um arquivo no executor.
    
  •         `--no-ask-user` impede que a CLI solicite a entrada do usuário, o que é importante ao executar em um fluxo de trabalho automatizado em que não há nenhum usuário para responder às solicitações de entrada adicional.
    

Próximas Etapas 

Depois de confirmar que o fluxo de trabalho gera um resumo das alterações, você pode adaptar o mesmo padrão a outras tarefas de automação. Comece alterando o prompt que você passa para copilot -p PROMPT, e depois decida o que fazer com a saída. Por exemplo, você poderia:

  • Crie uma solicitação de pull para atualizar um arquivo de changelog no repositório com as alterações do dia.
  • Envie o resumo por email aos mantenedores do repositório.

Leitura adicional

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