O GitHub Copilot pode gerar código Pulumi para infraestrutura em nuvem, mas suas sugestões muitas vezes precisam de orientação cuidadosa. Sem contexto adequado, o Copilot pode propor configurações incorretas de recursos ou omitir propriedades obrigatórias. Este artigo explica os padrões específicos que o Copilot segue ao gerar programas Pulumi em TypeScript, Python e C#. Você aprenderá como orientar o Copilot para código de infraestrutura preciso e como evitar armadilhas comuns.
Principais Conclusões: Padrões de Sugestão do Copilot para Pulumi
- Comentários inline com nomes de recursos e provedor de nuvem: Diga ao Copilot o tipo exato de recurso Azure, AWS ou GCP para gerar imports e construtores corretos.
- Valores de propriedade explícitos no código adjacente: Forneça valores de exemplo como região, tamanho ou SKU para que o Copilot infira o schema correto.
- Variáveis de saída estruturadas e referências de stack: Defina nomes de saída e referências de stack antes do bloco de recursos para orientar o Copilot a referências cruzadas válidas.
Como o Copilot Gera Código Pulumi
O Copilot usa o contexto do código ao redor e os dados do servidor de linguagem para prever as próximas linhas. Para Pulumi, isso significa que ele lê declarações de import existentes, nomes de variáveis e quaisquer comentários que você escreva. O Copilot não possui um conjunto de dados de treinamento especial para Pulumi. Ele depende de padrões vistos em milhões de repositórios públicos do GitHub. Quando você escreve um comentário como // Crie um grupo de recursos do Azure, o Copilot busca código que siga esse padrão e sugere a chamada do SDK do Pulumi.
Padrão de Construtor de Recurso
A sugestão mais comum é o construtor de recurso. O Copilot normalmente gera:
const resourceGroup = new azure.core.ResourceGroup("example", {
location: "West US",
});
O Copilot infere o nome da classe a partir do comentário. Se você escrever // Conta de armazenamento, ele pode sugerir new azure.storage.Account. O padrão funciona melhor quando você inclui o prefixo do provedor de nuvem no comentário.
Padrão de Preenchimento de Propriedades
Depois de digitar a chave de abertura de um construtor de recurso, o Copilot sugere nomes e valores de propriedades. Ele aprende com o tipo de recurso que você importou. Para buckets S3 da AWS, ele sugere bucket, acl e tags. Para VMs do Azure, sugere vmSize, osDisk e networkInterfaces. O Copilot nem sempre inclui propriedades obrigatórias, então você deve verificar a documentação oficial do Pulumi.
Padrão de Referência Cruzada entre Recursos
Quando você define dois recursos, o Copilot pode sugerir passar a saída de um como entrada para outro. Por exemplo, após criar um grupo de recursos, o Copilot pode sugerir:
const containerGroup = new azure.containerservice.Group("example", {
resourceGroupName: resourceGroup.name,
location: resourceGroup.location,
});
Esse padrão só aparece se você já definiu a variável do recurso de origem no mesmo escopo. Se você renomear a variável, o Copilot pode não atualizar a referência.
Passos para Melhorar as Sugestões do Copilot para Pulumi
- Escreva comentários explícitos antes de cada bloco de recurso
Inclua o provedor de nuvem e o tipo de recurso no comentário. Por exemplo:// Instância EC2 da AWS usando Pulumi. Isso informa ao Copilot qual SDK importar e qual classe instanciar. - Adicione um valor de propriedade de exemplo após o comentário
Escreva uma linha comoconst region = "us-east-1";diretamente acima do bloco de recurso. O Copilot usa isso como dica para a propriedade de localização. - Importe o SDK do Pulumi explicitamente no topo do arquivo
Escrevaimport * as azure from "@pulumi/azure";ou o equivalente para sua linguagem. Sem o import, o Copilot pode sugerir nomes de classes inexistentes. - Defina variáveis de saída antes do bloco de recurso
Escrevaexport const bucketName = bucket.id;após a criação do recurso. O Copilot usa isso para sugerir a propriedade de saída correta. - Use uma ordem consistente de propriedades
Sempre coloque as propriedades obrigatórias primeiro, depois as opcionais. O Copilot aprende a ordem a partir dos seus blocos de recurso anteriores e a repete. - Revise todas as propriedades sugeridas em relação ao schema do Pulumi
O Copilot pode sugerir uma propriedade que não existe para um determinado tipo de recurso. Abra a documentação do Pulumi no seu navegador e verifique o nome da propriedade.
Se o Copilot Ainda Sugerir Código Pulumi Incorreto
O Copilot Sugere uma Classe de Recurso Inexistente
Isso acontece quando o comentário é muito vago ou quando o import está ausente. Corrija escrevendo o nome exato da classe da documentação do Pulumi no comentário. Por exemplo, // azure.compute.VirtualMachine em vez de // VM do Azure. Em seguida, deixe o Copilot autocompletar o construtor.
O Copilot Omite Propriedades Obrigatórias
O Copilot frequentemente deixa de fora propriedades como resourceGroupName ou sku porque prevê propriedades opcionais primeiro. Após o Copilot sugerir um bloco, adicione manualmente as propriedades obrigatórias ausentes. Uma maneira rápida é digitar o nome da propriedade e deixar o Copilot sugerir o valor.
O Copilot Sugere Referências de Saída Incorretas
Se você renomear uma variável de recurso após o Copilot gerar o código, as referências de saída podem ainda apontar para o nome antigo. Exclua a linha de saída e deixe o Copilot regenerá-la. A nova sugestão usará o nome de variável atualizado.
O Copilot Não Sugere Nenhum Código Pulumi
Isso geralmente significa que a linguagem do arquivo não é reconhecida ou o SDK do Pulumi não está importado. Verifique se a extensão do arquivo está correta para sua linguagem. Além disso, garanta que o pacote NuGet do Pulumi ou o módulo npm esteja instalado no seu projeto. O Copilot só sugere código quando detecta o import do SDK.
Copilot Pro vs GitHub Copilot Free: Diferenças para Pulumi
| Item | Copilot Pro | GitHub Copilot Free |
|---|---|---|
| Tamanho da janela de contexto | Até 4.000 tokens de contexto de arquivo | Até 2.000 tokens de contexto de arquivo |
| Consciência de múltiplos arquivos | Sugere entre arquivos abertos no workspace | Apenas o arquivo atual e arquivos adjacentes |
| Suporte a chat inline | Disponível no VS Code, JetBrains e Neovim | Limitado ao VS Code |
| Instruções personalizadas | Suporta políticas de nível organizacional | Sem suporte a instruções personalizadas |
| Qualidade das sugestões Pulumi | Melhores referências cruzadas devido ao contexto maior | Sugestões mais isoladas, frequentemente sem referências |
Para projetos Pulumi grandes com muitos recursos interdependentes, o Copilot Pro fornece sugestões mais precisas porque pode ver o arquivo inteiro e arquivos relacionados. O Copilot Free funciona bem para stacks pequenas de arquivo único.
Para aproveitar ao máximo o Copilot para Pulumi, sempre comece com um comentário claro que nomeie o tipo exato de recurso e o provedor de nuvem. Adicione valores de propriedade de exemplo nas linhas acima do bloco de recurso. Defina variáveis de saída antecipadamente. Após o Copilot gerar um bloco, verifique cada propriedade em relação ao schema oficial do Pulumi. Use o Copilot Pro para projetos com mais de cinco recursos para se beneficiar da janela de contexto maior. Teste seu código gerado com pulumi preview antes de implantar.