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, veja 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 pré-compilada é executado, o GitHub cria um codespace temporário, realizando operações de configuração até e incluindo quaisquer comandos especificados 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 o envio de alterações em branches com pré-build habilitado
Por padrão, cada push para um branch com configuração de pré-build resulta na execução de um fluxo de trabalho GitHub Actions gerenciado pelo GitHub para atualizar o pré-build. 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, o fluxo de trabalho mais recentemente enfileirado será o próximo a ser executado, assim que a execução atual for concluída.
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 workflow será executado em um estado pendente.
Se qualquer um dos 4 pushes restantes alterar a configuração do contêiner de desenvolvimento, o serviço não o ignorará e executará imediatamente o fluxo de trabalho de criação prévia, atualizando a pré-compilação de acordo se for bem-sucedido.
-
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.