Visão geral
Uma pré-compilação monta os componentes principais de um codespace para uma combinação específica de repositório, branch e arquivo de configuração devcontainer.json. Ela fornece uma maneira rápida de criar um codespace. Para repositórios complexos e/ou grandes, em particular, é possível criar um codespace mais rapidamente usando uma pré-compilação.
Se atualmente você leva mais de dois minutos para criar um codespace para um repositório, é provável que possa se beneficiar do uso de pré-compilações. Isso ocorre porque, com uma pré-compilação, qualquer código-fonte, extensões de editor, dependências de projetos, comandos e configurações já foram baixadas, instaladas e aplicadas antes de criar um codespace para o seu projeto.
Por padrão, sempre que você enviar alterações por push para o seu repositório, o GitHub Codespaces usará GitHub Actions para atualizar automaticamente suas pré-compilações.
Quando os prebuilds estiverem disponíveis para um branch específico de um repositório, um arquivo de configuração de contêiner de desenvolvimento específico e para sua região, você verá o rótulo " Prebuild ready" na lista de opções de tipo de computador quando criar um codespace. Se um pré-build ainda estiver sendo criado, você verá o rótulo " Prebuild in progress". Para saber mais, confira AUTOTITLE.

Quando você cria um codespace a partir de um modelo na página "Seus codespaces", GitHub pode usar automaticamente uma pré-compilação para acelerar o tempo de criação. Para saber mais sobre modelos, confira AUTOTITLE.
Observação
Cada pré-compilação criada consome espaço de armazenamento que gera uma cobrança ou, para repositórios pertencentes à sua conta pessoal do GitHub, usa parte do armazenamento mensal incluído. Para saber mais, confira AUTOTITLE.
O processo de pré-compilação
Para criar uma pré-compilação, defina uma configuração de pré-compilação. Quando você salva a configuração, um fluxo de trabalho do GitHub Actions é executado para criar cada uma das pré-compilações necessárias – um fluxo de trabalho por pré-compilação. Os fluxos de trabalho também são executados sempre que as pré-compilações para sua configuração precisam ser atualizadas. Isso pode acontecer em intervalos programados, em pushs para um repositório habilitado para pré-compilação ou quando você altera a configuração do contêiner de desenvolvimento. Para saber mais, confira AUTOTITLE.
Quando um fluxo de trabalho de configuração de pré-compilação é executado, o GitHub cria um codespace temporário, executando operações de configuração até e incluindo quaisquer comandos e no arquivo . Nenhum comando é executado durante a criação de uma pré-compilação. Para obter mais informações sobre esses comandos, confira a referência na documentação do VS Code. Um instantâneo do contêiner gerado é então obtido e armazenado.
Assim como acontece com outros fluxos de trabalho de GitHub Actions, a execução de um fluxo de trabalho de configuração de pré-compilação consumirá alguns dos minutos GitHub Actions incluídos em sua conta, se você tiver algum, ou incorrerá em encargos por GitHub Actions minutos. O armazenamento de pré-compilações do codespace é cobrado da mesma forma que o armazenamento de codespaces ativos ou interrompidos. Para saber mais, confira AUTOTITLE.
Quando você cria um codespace a partir de uma pré-compilação, GitHub baixa o instantâneo de contêiner existente do armazenamento e o implanta em uma nova máquina virtual, concluindo os comandos restantes especificados na configuração do contêiner de desenvolvimento. Como muitas operações já foram executadas, como clonar o repositório, criar um codespace a partir de uma pré-compilação pode ser substancialmente mais rápido do que criá-lo sem pré-compilação. Isso é verdade quando o repositório é grande e/ou os comandos demoram muito para serem executados.
Sobre fazer push de alterações em branches com pré-criação
Por padrão, cada push para um branch que tem uma configuração de pré-compilação resulta em um fluxo de trabalho GitHub Actions gerenciado por GitHub executado para atualizar a pré-compilação. O fluxo de trabalho de prebuild tem um limite de concorrência de uma execução de fluxo de trabalho de cada vez para uma determinada configuração de prebuild, exceto se tiverem sido feitas alterações que afetem a configuração do contêiner de desenvolvimento do repositório associado. Para saber mais, confira AUTOTITLE. Se uma execução já estiver em andamento, a execução do fluxo de trabalho que foi enfileirada mais recentemente será executada em seguida, após a conclusão da execução atual.
Com a pré-compilação configurada para ser atualizada em cada envio, isso significa que, se houver envios muito frequentes para seu repositório, as atualizações de pré-compilação ocorrerão com a frequência necessária para executar o fluxo de trabalho de pré-compilação. Ou seja, se a execução do fluxo de trabalho normalmente leva uma hora para ser concluída, prebuilds serão criados para o repositório aproximadamente a cada hora, se a execução for bem-sucedida, ou mais frequentemente se houver pushes que alterem a configuração do contêiner de desenvolvimento no branch.
Por exemplo, vamos imaginar que 5 pushes são feitos, em rápida sucessão, para um branch que tem uma configuração de pré-compilação. Nesta situação:
-
Uma execução de fluxo de trabalho é iniciada para o primeiro push, para atualizar a pré-compilação.
-
Se os 4 pushes restantes não afetarem a configuração do contêiner de desenvolvimento, o fluxo de trabalho será executado em um estado de "pendência".
Se qualquer um dos 4 pushes restantes alterar a configuração do contêiner de desenvolvimento, o serviço não irá ignorá-lo e irá executar imediatamente o fluxo de trabalho pré-criação, atualizando a pré-compilação adequadamente se puder.
-
Assim que a primeira execução for concluída, as execuções de fluxo de trabalho para push 2, 3 e 4 serão canceladas e o último fluxo de trabalho enfileirado (para push 5) será executado e atualizará a pré-compilação.