{"meta":{"title":"Sobre as pré-compilações do GitHub Codespaces","intro":"As pré-compilações GitHub Codespaces ajudam a acelerar a criação de codespaces para repositórios grandes ou complexos.","product":"Codespaces","breadcrumbs":[{"href":"/pt/codespaces","title":"Codespaces"},{"href":"/pt/codespaces/prebuilding-your-codespaces","title":"Pré-construindo seus codespaces"},{"href":"/pt/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds","title":"Sobre as pré-compilações"}],"documentType":"article"},"body":"# Sobre as pré-compilações do GitHub Codespaces\n\nAs pré-compilações GitHub Codespaces ajudam a acelerar a criação de codespaces para repositórios grandes ou complexos.\n\n## Visão geral\n\nUma 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.\n\nSe 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.\n\nPor 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.\n\nQuando 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 \"<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-zap\" aria-label=\"zap\" role=\"img\"><path d=\"M9.504.43a1.516 1.516 0 0 1 2.437 1.713L10.415 5.5h2.123c1.57 0 2.346 1.909 1.22 3.004l-7.34 7.142a1.249 1.249 0 0 1-.871.354h-.302a1.25 1.25 0 0 1-1.157-1.723L5.633 10.5H3.462c-1.57 0-2.346-1.909-1.22-3.004L9.503.429Zm1.047 1.074L3.286 8.571A.25.25 0 0 0 3.462 9H6.75a.75.75 0 0 1 .694 1.034l-1.713 4.188 6.982-6.793A.25.25 0 0 0 12.538 7H9.25a.75.75 0 0 1-.683-1.06l2.008-4.418.003-.006a.036.036 0 0 0-.004-.009l-.006-.006-.008-.001c-.003 0-.006.002-.009.004Z\"></path></svg> 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 \"<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-history\" aria-label=\"history\" role=\"img\"><path d=\"m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z\"></path></svg> Prebuild in progress\". Para saber mais, confira [Como criar um codespace para um repositório](/pt/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository#creating-a-codespace-for-a-repository).\n\n![Captura de tela de uma lista de tipos de computador disponíveis: 2, 4, 8, 16 e 32 núcleos, todos rotulados como \"Pré-compilação pronto\".](/assets/images/help/codespaces/choose-custom-machine-type.png)\n\nQuando 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 [Como criar um codespace com base em um modelo](/pt/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template).\n\n> \\[!NOTE]\n> 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 [Cobrança do GitHub Codespaces](/pt/billing/concepts/product-billing/github-codespaces).\n\n## O processo de pré-compilação\n\nPara 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 [Configurando as pré-compilações](/pt/codespaces/prebuilding-your-codespaces/configuring-prebuilds#configuring-prebuilds).\n\nQuando 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 `onCreateCommand` e `updateContentCommand` no arquivo `devcontainer.json`. Nenhum comando `postCreateCommand` é executado durante a criação de uma pré-compilação. Para obter mais informações sobre esses comandos, confira a referência [`devcontainer.json`](https://code.visualstudio.com/docs/remote/devcontainerjson-reference#_devcontainerjson-properties) na documentação do VS Code. Um instantâneo do contêiner gerado é então obtido e armazenado.\n\nAssim 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 [Cobrança do GitHub Codespaces](/pt/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces).\n\nQuando 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 `onCreateCommand` demoram muito para serem executados.\n\n## Sobre fazer push de alterações em branches com pré-criação\n\nPor padrão, cada push para um branch que tem uma configuração de pré-compilação resulta em um fluxo de trabalho GitHub gerenciado por GitHub Actions 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 [Introdução aos contêineres de desenvolvimento](/pt/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers). 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.\n\nCom 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.\n\nPor 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:\n\n* Uma execução de fluxo de trabalho é iniciada para o primeiro push, para atualizar a pré-compilação.\n\n* 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\".\n\n  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.\n\n* 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."}