Skip to main content

Configurando as pré-criações

Você pode configurar o projeto para predefinir um codespace automaticamente sempre que você efetuar push de uma alteração para o repositório.

Quem pode usar esse recurso?

People with admin access to a repository can configure prebuilds for the repository.

As configurações de nível do repositório para o GitHub Codespaces estão disponíveis para todos os repositórios pertencentes a contas pessoais.

Para os repositórios pertencentes a organizações, as configurações de nível do repositório do GitHub Codespaces estão disponíveis para as organizações com os planos do GitHub Team e do GitHub Enterprise. Para acessar as configurações, a organização ou a empresa matriz precisa ter adicionado uma forma de pagamento e definido um limite de gastos para o GitHub Codespaces. Para obter mais informações, confira "Como escolher quem tem a propriedade e paga pelos codespaces em sua organização" e "Planos do GitHub."

Você pode definir uma configuração de prebuild para a combinação de um branch específico do repositório com um arquivo de configuração de contêiner de desenvolvimento específico.

Todos os branches criados com base em um branch pai habilitado para o prebuild normalmente também obterão prebuilds para a mesma configuração de contêiner de desenvolvimento. Isso ocorre porque as pré-compilações para branches filhos que usam a mesma configuração de contêiner de desenvolvimento que o branch pai é, na maioria das vezes, idêntica, para que os desenvolvedores também possam se beneficiar de tempos de criação de codespace mais rápidos nesses branches. Para obter mais informações, confira "Introdução aos contêineres de desenvolvimento".

Normalmente, quando você configura prebuilds para um branch, eles estarão disponíveis para vários tipos de computador. No entanto, se seu repositório tiver um tamanho superior a 32 GB, as pré-compilações não estarão disponíveis para tipos de máquina 2-core e 4-core, uma vez que o armazenamento previsto é limitado a 32 GB.

Pré-requisitos

As pré-compilações são criadas usando o GitHub Actions. Como resultado, GitHub Actions precisa ser habilitado para o repositório para o qual você está configurando pré-compilações. Para obter mais informações, confira "Gerenciando as configurações do GitHub Actions para um repositório".

Você pode configurar pré-builds em qualquer repositório pertencente a uma conta pessoal. O pré-build consumirá um espaço de armazenamento que gera uma cobrança ou, para os repositórios pertencentes à sua conta pessoal, usará uma parte do armazenamento mensal incluído.

Nota: Se você criar pré-compilações para um repositório com fork, o custo de armazenamento dessas pré-compilações será subtraído do armazenamento mensal incluído, enquanto disponível. Se você tiver usado todo o armazenamento incluído e tiver configurado a cobrança, sua conta pessoal será cobrada. Isso é válido mesmo quando os codespaces criados para um fork são pagos pela organização proprietária do repositório pai. Para obter mais informações, consulte "Sobre o faturamento do GitHub Codespaces".

Para os repositórios pertencentes a uma organização, você poderá configurar pré-builds se a organização usar um plano do GitHub Team ou do GitHub Enterprise. Além disso, você precisa ter adicionado uma forma de pagamento e definido um limite de gastos para o GitHub Codespaces na conta da organização ou na empresa matriz. Para obter mais informações, confira "Managing the spending limit for GitHub Codespaces" e "Planos do GitHub."

Configurando as pré-criações

  1. No GitHub.com, navegue até a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na seção "Código e automação" da barra lateral, clique em Codespaces .

  4. Na seção "Configuração de prebuild" da página, clique em Configurar prebuild.

    Captura de tela da seção "Configuração de predefinição" da página de configurações de "Codespaces", mostrando o botão "Configurar predefinições".

  5. Escolha o branch para o qual você deseja configurar pré-compilações.

    Captura de tela das definições de "Configuração" para uma predefinição com um menu suspenso listando os branches a serem selecionados. O branch "principal" está selecionado no momento.

    Observação: todos os branches criados com base em um branch base habilitado para o prebuild normalmente também obterão prebuilds para a mesma configuração de contêiner de desenvolvimento. Por exemplo, se você habilitar prebuilds para um arquivo de configuração de contêiner de desenvolvimento no branch padrão do repositório, os branches baseados no branch padrão também obterão, na maioria dos casos, prebuilds para a mesma configuração de contêiner de desenvolvimento.

  6. Opcionalmente, no menu suspenso Arquivo de configuração exibido, escolha o arquivo de configuração devcontainer.json que deseja usar para suas pré-compilações. Para obter mais informações, confira "Introdução aos contêineres de desenvolvimento".

    Captura de tela do menu suspenso do arquivo de configuração. Quatro arquivos de configuração estão listados, com o ".devcontainer/devcontainer.json" atualmente selecionado.

  7. Escolha como você deseja acionar automaticamente as atualizações da pré-compilação.

    • Cada push (a configuração padrão) – com essa configuração, as pré-compilações serão atualizadas em cada push feito para o branch especificado. Isso garantirá que os codespaces gerados a partir de uma pré-compilação sempre contenham a configuração de codespace mais recente, incluindo quaisquer dependências adicionadas ou atualizadas recentemente.

    • Na alteração de configuração – com essa configuração, as pré-compilações serão atualizadas sempre que qualquer um dos seguintes arquivos for alterado:

      • .devcontainer/devcontainer.json

        Observação: as atualizações de pré-compilação não são disparadas por alterações em arquivos devcontainer.json dentro de subdiretórios de .devcontainer.

      • O Dockerfile referenciado na propriedade build.dockerfile do arquivo .devcontainer/devcontainer.json.

      Essa configuração garante que as alterações nos arquivos de configuração do contêiner de desenvolvimento para o repositório sejam usadas quando um codespace for gerado a partir de uma pré-compilação. O fluxo de trabalho do GitHub Actions que atualiza as pré-compilações será executado com menos frequência, portanto, essa opção usará menos minutos de GitHub Actions. No entanto, essa opção não garantirá que os codespaces sempre incluam dependências adicionadas ou atualizadas recentemente, portanto, elas podem ter que ser adicionadas ou atualizadas manualmente após a criação de um codespace.

    • Agendado – com essa configuração, você pode ter suas pré-compilações atualizadas em uma agenda personalizada definida por você. Isso pode reduzir o consumo de minutos do GitHub Actions, mas com essa opção, podem ser criados codespaces que não usam as alterações de configuração de contêiner de desenvolvimento mais recentes.

    Captura de tela das configurações de "Gatilhos de predefinições". A opção "Agendado" está selecionada e definida como "Todos os dias" às "13h" e às "15h30".

  8. Opcionalmente, selecione Reduzir pré-compilação disponível apenas para regiões específicas para criar pré-compilações somente em regiões especificadas. Selecione as regiões nas quais você deseja que as pré-compilações estejam disponíveis.

    Por padrão, as pré-compilações são criadas em todas as regiões disponíveis, incorrendo em encargos de armazenamento por pré-compilação.

    Captura de tela das configurações de "Disponibilidade da região". "Reduzir a disponibilidade da predefinição para apenas regiões específicas" está selecionada com duas regiões selecionadas.

    Observações:

    • A pré-compilação em cada região incorre em encargos de armazenamento individuais. Por conseguinte, só devem ser permitidas pré-construções para regiões em que se sabe que serão utilizadas. Para obter mais informações, confira "Sobre o faturamento do GitHub Codespaces".
    • Os desenvolvedores podem definir sua região padrão para GitHub Codespaces, que pode permitir que você habilite pré-compilações para menos regiões. Para obter mais informações, confira "Como definir sua região padrão para o GitHub Codespaces".
  9. Como alternativa, em Histórico de modelo, defina o número de versões de pré-compilação a serem mantidas. Você pode inserir qualquer número entre 1 e 5. O número padrão de versões salvas é 2, o que significa que apenas a última pré-compilação do modelo e a versão anterior são salvas.

    Captura de tela da configuração "Histórico de modelos". Está definido como duas versões.

    Dependendo das configurações do seu acionador de pré-compilação, esta pode mudar a cada push ou em cada alteração de configuração do contêiner de desenvolvimento. A retenção de versões mais antigas de pré-compilações permite que você crie uma pré-compilação de um commit mais antigo com uma configuração de contêiner de desenvolvimento diferente da pré-compilação atual. Essa configuração permite que você defina o número de versões retidas para um nível apropriado para suas necessidades.

    Se você definir o número de versões de pré-compilação a serem salvas como 1, GitHub Codespaces salvará apenas a versão mais recente da pré-compilação e excluirá a versão mais antiga sempre que o modelo for atualizado. Isso significa que você não obterá um codespace predefinido se voltar para uma configuração de contêiner de desenvolvimento mais antiga.

    Há um custo de armazenamento associado a cada versão de pré-compilação que é mantida. Por exemplo, se você estiver gerando pré-compilações em quatro regiões e mantendo duas versões, será cobrado pelo armazenamento de até oito pré-compilações. Para obter mais informações sobre faturamento, confira "Sobre o faturamento do GitHub Codespaces".

  10. Como alternativa, adicione usuários ou equipes a serem notificados quando a execução do fluxo de trabalho de predefinição falhar para essa configuração. Você pode começar a digitar um nome de usuário, um nome de equipe ou um nome completo e depois clicar no nome quando ele aparecer para adicioná-lo à lista. Os usuários ou as equipes que você adicionar receberão um email quando ocorrerem falhas de predefinição, contendo um link para os logs de execução de fluxo de trabalho como ajuda em uma investigação mais aprofundada.

    Captura de tela da configuração de "Notificações de falha". A equipe chamada "octocat-team" foi adicionada.

    Nota: as pessoas só receberão notificações de pré-builds com falha se tiverem habilitado notificações para fluxos de trabalho de Ações com falha em suas configurações pessoais. Para obter mais informações, confira "Configurar notificações".

  11. Opcionalmente, na parte inferior da página, clique em Mostrar opções avançadas.

    Captura de tela da parte inferior da página de configuração de predefinições. O link "Mostrar opções avançadas" é realçado com um contorno laranja escuro.

    Na seção "Opções avançadas", se você selecionar Desabilitar otimização de pré-compilação, os codespaces serão criados sem uma pré-compilação se o fluxo de trabalho de pré-compilação mais recente falhar ou estiver em execução no momento. Para obter mais informações, confira "Solução de problemas de pré-compilações".

  12. Clique em Criar.

    Se a configuração do contêiner de desenvolvimento para o repositório especificar permissões para acessar outros repositórios, será mostrada uma página de autorização. Para obter mais informações sobre como isso é especificado no arquivo devcontainer.json, confira "Gerenciar o acesso a outros repositórios em seu codespace".

    Clique em para exibir os detalhes das permissões solicitadas.

    Captura de tela de uma página de autorização para uma configuração de pré-compilação. Três permissões são listadas nesta solicitação.

    Clique em Autorizar e continuar para conceder essas permissões para a criação de pré-compilações. Como alternativa, você pode clicar em Continuar sem autorizar, mas, se fizer isso, os codespaces criados com base na pré-compilação resultante poderão não funcionar corretamente.

    Observação: os usuários que criarem codespaces usando essa pré-compilação também serão solicitados a conceder essas permissões.

Após criar uma configuração de pré-compilação, ela é listada na página do GitHub Codespaces das configurações do seu repositório. Um fluxo de trabalho GitHub Actions é enfileirado e executado para criar pré-compilações nas regiões que você especificou, com base no arquivo de configuração de branch e contêiner de desenvolvimento que você selecionou.

Captura de tela da lista de configurações de prebuild. Uma pré-compilação está listada, rotulada como "Atualmente em execução". À direita dele está um botão "Ver saída".

Para obter informações sobre como editar e excluir as configurações de predefinição, confira "Gerenciando pré-compilações".

Configurar variáveis de ambiente

Para permitir que o processo de pré-compilação acesse as variáveis de ambiente necessárias para criar seu ambiente de desenvolvimento. Você pode defini-las como segredos de repositório de Codespaces ou como segredos da organização de Codespaces. Os segredos que você criar desta forma serão acessíveis por qualquer pessoa que crie um codespace a partir deste repositório. Para obter mais informações, confira "Gerenciando segredos do ambiente de desenvolvimento para seu repositório ou organização".

As pré-compilações não podem usar nenhum segredo de nível de usuário ao construir seu ambiente, porque elas não estarão disponíveis até que o codespace seja criado.

Configurando tarefas demoradas a serem incluídas na pré-compilação

Você pode usar os comandos onCreateCommand e updateContentCommand em seu devcontainer.json para incluir processos demorados como parte da criação da pré-compilação. Para obter mais informações, confira a documentação do Visual Studio Code, "devcontainer.json reference".

onCreateCommand é executado apenas uma vez, quando a pré-compilação é criada, enquanto updateContentCommand é executado na criação do modelo pré-compilado e erm suas atualizações subsequentes. As compilações incrementais devem ser incluídas em updateContentCommand, pois representam a origem do seu projeto e precisam ser incluídas para cada atualização de pré-compilação.

Leitura adicional