Skip to main content

Automatizando tarefas com Copilot CLI e GitHub Actions

Integre CLI do GitHub Copilot aos 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 GitHub Actions fluxo de trabalho para automatizar tarefas alimentadas por IA como parte do 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 de Ações, como qualquer outra ferramenta da CLI, para que você possa instalá-lo durante um trabalho e invocá-lo das etapas de fluxo de trabalho.

Usando CLI do Copilot em um fluxo de trabalho do Actions

Você pode definir um trabalho em um GitHub Actions fluxo de trabalho que: instala CLI do Copilot no executor, o autentica, executa-o no modo programático e manipula 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. 1. Autenticar: verifique se a CLI tem as permissões necessárias para acessar o repositório e fazer alterações. 1. Executar CLI do Copilot: invoque CLI do Copilot com um prompt que descreva 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 workflow_dispatch gatilho permite executar o fluxo de trabalho manualmente na guia Ações do seu repositório no GitHub, o que é útil ao testar alterações na configuração do fluxo de trabalho ou do prompt.

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 o trabalho para que CLI do Copilot possa acessar seu repositório e executar no executor de ações. Isso permite CLI do Copilot analisar o contexto do repositório ao gerar 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 o fluxo de trabalho possa invocá-lo como um comando. Você pode instalar CLI do GitHub Copilot usando qualquer método de instalação com suporte. Para obter uma lista completa das opções de instalação, consulte Instalando a 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 CLI do Copilot seja executado em um runner do Actions, você precisa autenticar uma conta de usuário GitHub com uma licença Copilot válida.

          **Passo 1: Crie um personal access token (PAT) com a permissão "Copilot Requests":**
  1. Vá para 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 do 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 dá suporte a várias variáveis de ambiente especiais para autenticação. Neste exemplo, o fluxo de trabalho usa COPILOT_GITHUB_TOKEN, que é específico de CLI do Copilot e permite que você defina permissões diferentes para Copilot, do que as que você pode usar em outro lugar com a variável de ambiente interna GITHUB_TOKEN.

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

Execute 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 executar comandos Copilot git para analisar o histórico do repositório. Isso é necessário para gerar o resumo das alterações recentes.
    
  •         `--allow-tool='write'` permite Copilot gravar 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)