A CNB (Cloud Native Build) é uma plataforma de desenvolvedor nativa da nuvem lançada pela Tencent, centrada no conceito central de "tudo é código" e tem como objetivo ajudar os desenvolvedores a criar software de forma mais simples e avançada. A plataforma define e gerencia todo o processo, desde o desenvolvimento até a criação e o teste, por meio de um arquivo de configuração YAML declarativo. Essa abordagem codifica o complexo processo de criação para que possa ser gerenciado pelo sistema de controle de versão juntamente com o código-fonte do projeto. A CNB se integra profundamente ao ecossistema do Docker e usa a tecnologia de contêineres para garantir a consistência dos ambientes de desenvolvimento, teste e produção, o que resolve fundamentalmente os problemas causados pelas diferenças nos ambientes. Além disso, a plataforma também oferece uma solução de desenvolvimento remoto baseada na tecnologia de "clonagem de leitura por segundo", que pode iniciar um ambiente de desenvolvimento em nuvem bem configurado em segundos, melhorando consideravelmente a eficiência do desenvolvimento.
Lista de funções
- Pipeline como códigoUse um arquivo de configuração YAML simples e fácil de entender para definir todo o pipeline de compilação e incorporá-lo ao Git para controle de versão.
- Ambiente de compilação declarativoDeclaração explícita das imagens do Docker necessárias para uma compilação em um arquivo de configuração: a declaração explícita das imagens do Docker necessárias para uma compilação em um arquivo de configuração garante que cada compilação seja executada em um ambiente imaculado e consistente.
- Cache de compilação declarativaSuporte à declaração de cache no modo copy-on-write, em cenários de compilação simultânea, para evitar conflitos de leitura/gravação no cache e aumentar a eficiência da compilação.
- Docker como um ambiente de execuçãoTodas as tarefas de compilação são executadas no contêiner do Docker especificado, aproveitando o mecanismo de sandboxing do Docker para garantir o isolamento e a confiabilidade da execução da tarefa.
- Ecossistema de plug-ins baseado no DockerRecursos genéricos abstratos em plug-ins do Docker e distribuídos por meio de repositórios de imagens do Docker, onde os desenvolvedores podem compartilhar e reutilizar facilmente vários recursos de compilação.
- Acesso sob demanda a recursos de computaçãoCPU: permite que os desenvolvedores declarem os recursos de CPU necessários em um arquivo de configuração, e a plataforma alocará dinamicamente até 64 núcleos com base na declaração.
- Espaço de trabalho remotoSolução de ambiente de desenvolvimento baseado em nuvem que prepara um espaço de trabalho remoto em segundos com o clique de um botão e oferece suporte ao acesso remoto para codificação.
- tecnologia de clonagem por leitura de segundosCom base na implementação do OverlayFS, até mesmo grandes repositórios de código com mais de 100 GB podem ser clonados em segundos, permitindo que os desenvolvedores comecem a programar rapidamente.
Usando a Ajuda
No centro da plataforma CNB está sua filosofia de design "tudo é código". Quase tudo que um usuário faz é editado em um arquivo de configuração no formato YAML. Esse arquivo geralmente é colocado no diretório raiz do repositório de código e descreve "o que fazer" e "em que circunstâncias".
Conceito central: perfis
A estrutura mais básica do arquivo de configuração é a seguinte, que define um arquivo de configuração noNode.js 20
Um pipeline simples executado no ambiente consiste em três etapas: imprimir a versão, instalar as dependências e executar os testes.
main:
push:
- docker:
image: node:20
stages:
- node -v
- npm install
- npm test
Depois de fazer o commit desse arquivo em seu repositório Git, o CNB executará automaticamente esse pipeline.
Detalhes de configuração da função principal
1. ambiente de compilação declarativo
Você pode especificar diferentes ambientes do Docker para diferentes tarefas. O cnb extrairá automaticamente a imagem do Docker correspondente e criará um contêiner para executar seus comandos quando chegar a essa etapa. Isso garante que o ambiente seja puro e consistente para cada compilação.
Por exemplo, você pode testar a compatibilidade de projetos com diferentes versões do Node.js no mesmo pipeline:
main:
push:
- stages:
- name: "在Node 20环境下运行"
image: node:20
script:
- node -v
- name: "在Node 21环境下运行"
image: node:21
script:
- node -v
name
Nome da etapa: Defina um nome legível para a etapa.image
Imagem do Docker: Especifique a imagem do Docker necessária para executar essa etapa.script
Comando: Contém uma lista de comandos a serem executados.
2. construção declarativa do cache
Para acelerar o processo de compilação, especialmente com um processo de compilação como onpm install
Com uma etapa de instalação de dependências tão demorada, é crucial configurar o cache.O cache do CNB é declarativo e oferece suporte aocopy-on-write
muito adequado para cenários simultâneos, pode efetivamente evitar conflitos de leitura e gravação no cache.
main:
push:
- docker:
image: node:20
volumes:
- node_modules:copy-on-write
stages:
- node -v
- npm install
- npm test
volumes
Declarar o diretório ou arquivo a ser armazenado em cache aqui.node_modules:copy-on-write
:: Indica uma alteração nonode_modules
Cache de cópia na gravação ativado por diretório. Quando o cache não existe, ele grava normalmente; quando o cache já existe, ele cria um link para o cache, e a operação de cópia real ocorre somente quando o arquivo é modificado.
3. alocação de recursos de alto desempenho sob demanda
Se suas tarefas de compilação ou teste exigirem alto desempenho computacional (por exemplo, compilação, análise de código etc.), você poderá solicitar mais recursos de CPU sob demanda.
main:
push:
- runner:
cpus: 64
docker:
image: node:20
stages:
- node -v
- npm install
- npm test
runner.cpus
Núcleos de CPU: Declare aqui o número de núcleos de CPU que você deseja alocar, até 64 núcleos. A plataforma atenderá dinamicamente à sua solicitação com base nos recursos.
4. configuração de espaços de trabalho de desenvolvimento remoto
Esse é um recurso especial do CNB. Você pode definir um ambiente de desenvolvimento remoto em um arquivo de configuração. Quando você precisar, o CNB iniciará um ambiente de desenvolvimento na nuvem para você em segundos, com código e dependências completos, usando a tecnologia "read-second cloning".
$:
vscode:
- runner:
cpus: 64
services:
- vscode
docker:
image: node:20
volumes:
- node_modules:copy-on-write
stages:
- npm install
$
Os símbolos são identificadores específicos para espaços de trabalho remotos.- Quando a configuração estiver concluída, clique no botão Cloud Native Development do repositório correspondente na plataforma CNB para iniciá-lo. A plataforma pré-executará o
stages
comandos (comonpm install
), quando você o acessa remotamente, todas as dependências estão prontas e você pode começar a programar imediatamente.
cenário do aplicativo
- Linha de montagem automatizada de CI/CD
Configure processos automatizados de criação, teste e implantação de projetos. Os desenvolvedores simplesmente enviam o código para um repositório Git, e o CNB automatiza todos os processos subsequentes, garantindo a qualidade do código e a entrega rápida. - Ambiente de desenvolvimento de equipe unificado
A funcionalidade de espaço de trabalho remoto garante que todos os membros da equipe usem o mesmo ambiente de desenvolvimento, evitando o problema típico de "funciona no meu computador" e reduzindo o custo de configuração do ambiente para os novos membros que entram no projeto. - Desenvolvimento rápido e revisão de grandes repositórios de código
Para projetos com grandes bases de código, o tradicionalgit clone
Isso pode levar dezenas de minutos ou mais. Com a tecnologia de clonagem de leitura por segundo da CNB, os desenvolvedores e revisores podem buscar o código e iniciar um ambiente completo em segundos, aumentando consideravelmente a eficiência da revisão de código e do desenvolvimento de ramificações. - Crie tarefas que exijam computação de alto desempenho
Para projetos que exigem grandes quantidades de recursos de computação, como compilação de C++, processamento de dados em grande escala ou testes complexos de ponta a ponta, você pode solicitar nós de HPC sob demanda por meio do CNB e usá-los sob demanda para economizar custos.
QA
- Que tipo de plataforma é o CNB?
O CNB (Cloud Native Build) é uma plataforma de construção nativa da nuvem para desenvolvedores lançada pela Tencent Cloud. Ela ajuda os desenvolvedores a automatizar todo o processo de desenvolvimento de software e fornece um ambiente de desenvolvimento remoto eficiente por meio da abordagem "tudo é código". - Quais são os benefícios de "tudo é código"?
Ele torna o processo de criação e implantação transparente, rastreável e fácil de gerenciar. Todo o processo é gerenciado como código por um sistema de controle de versão (por exemplo, Git), todas as alterações são documentadas, os membros da equipe podem colaborar em revisões e modificações e podem ser facilmente reutilizados e migrados. - Como o espaço de trabalho remoto do CNB começa em segundos?
Ele se baseia em um programa chamadogit-clone-yyds
A tecnologia é baseada no sistema de arquivos OverlayFS, que permite leituras sob demanda de repositórios de até 100 GB. Em vez de fazer o download de todo o repositório de código, ele cria uma visualização do repositório remoto, permitindo leituras sob demanda, de modo que até mesmo repositórios de 100 GB possam ser "clonados" e preparados para espaços de trabalho em segundos. - Qual é a diferença entre o CNB e as ferramentas tradicionais de CI/CD?
Além de fornecer recursos de CI/CD, o CNB enfatiza o gerenciamento declarativo e a consistência dos ambientes e integra profundamente os ambientes de desenvolvimento nativos da nuvem. Ele unifica o ambiente de desenvolvimento e o pipeline de construção com um conjunto de sintaxe declarativa para definição, abrindo a cadeia completa do desenvolvimento à construção.