Como configurar um pipeline CI/CD usando ações do GitHub

Quando comecei a trabalhar com equipes, aprendi rapidamente que o código de escrever era a parte mais fácil, colocá -lo em produção sem quebrar as coisas era o verdadeiro desafio. Foi aí que descobri o poder do CI/CD. Um pipeline de CI/CD é essencialmente uma automação que garante que cada confirmação passa pelas mesmas verificações, compra e implantações, o que significa menos correções de bugs e construções quebradas tardias da noite. Feito certo, ele remove a dor das liberações manuais e faz com que sua equipe se mova mais rapidamente. Mas se você já tentou configurar ferramentas como Jenkins ou Gitlab CI, provavelmente sabe que a curva de aprendizado pode ser … um pouco demais. É por isso que cheguei a realmente apreciar as ações do GitHub. Como a maioria dos meus projetos já vive no Github, não preciso pular entre plataformas ou conectar serviços externos. Está tudo em um só lugar. A configuração de um pipeline de CI/CD em funcionamento é muito mais fácil do que eu esperava. Neste artigo, vou orientá -lo como configurei um pipeline de CI/CD com ações do GitHub, usando um aplicativo de reação de amostra e implantando -o nas páginas do GitHub. Ao longo do caminho, compartilharei algumas lições que aprendi e, no final, você verá como colocar seu próprio projeto executando com construções e implantações automatizadas. Se você é novo nos conceitos de CI/CD, consulte primeiro o nosso artigo anterior CI/CD em DevOps: teoria para praticar onde mergulhamos nos princípios. Aqui, ficaremos práticos e práticos. O que é CI/CD? (Atualização rápida) Antes de configurar o pipeline, vamos recapitular os três conceitos principais: integração contínua (IC) em um ambiente colaborativo, vários desenvolvedores trabalham em recursos separados. Depois de concluído, cada recurso é mesclado no repositório compartilhado. Com o CI, todos os desencadeadores de mesclagem automatizam construções e testes para pegar bugs mais cedo. Entrega contínua (CD) Isso vai um passo adiante – depois que o código passa em todos os testes, ele é construído e implantado automaticamente em um ambiente de preparação, preparando -o para a liberação de produção. Implantação contínua (CD) O estágio final automatiza a implantação para a produção. Cada compromisso de sucesso se move diretamente para o ambiente ao vivo, garantindo que os usuários sempre experimentem a mais recente versão estável. Ações do GitHub – A plataforma CI/CD Ações do GitHub é a própria plataforma de automação do GitHub. Em vez de instalar um sistema CI/CD separado, você define fluxos de trabalho dentro do seu repositório. Esses fluxos de trabalho são escritos na YAML e especificam trabalhos executados em máquinas virtuais hospedadas no Github (como Ubuntu, Windows ou MacOS). Um fluxo de trabalho típico pode incluir etapas como: verificando o código que instala dependências executando testes de criação do aplicativo implantando para páginas do GitHub, AWS ou outro serviço O que torna as ações do GitHub poderosas é o mercado de ações pré -construídas que você não precisa reinventar a roda para tarefas comuns, como cache, teste ou implantação. Configurando o projeto para o nosso guia prático, vamos supor que estamos trabalhando com um pequeno aplicativo de reação. (Você pode seguir as mesmas etapas para uma API Node.js, aplicativo Python ou site estático com pequenas modificações.) Crie um novo aplicativo React: empurre -o para um novo repositório do GitHub: agora estamos prontos para integrar ações do GitHub. Configurando o fluxo de trabalho Ações do GitHub Um fluxo de trabalho em ações do GitHub é um processo automatizado que executa um ou mais trabalhos com base em eventos em seu repositório. Pense nisso como um plano que informa ao GitHub quando acionar a automação (como em cada solicitação de push ou puxar) e quais etapas a serem executadas (como instalar dependências, executar testes ou implantar seu aplicativo). Os fluxos de trabalho vivem dentro de um .github/ workflows/ diretório. Vamos criar um: Inside main.yml, definiremos o pipeline CI/CD. Etapa 1: Criando um token de acesso pessoal do Github para implantação, as ações do GitHub precisam de permissão para empurrar para o seu repositório. Para dar acesso: vá para github> Configurações> Configurações do desenvolvedor> Tokens de acesso pessoal. Crie um novo token com permissões de repo. Copie o token. No seu repositório, vá para Configurações> Segredos e Variáveis> Ações. Adicione um novo segredo chamado Implement_Key e cole o token. Etapa 2: Escrevendo o fluxo de trabalho (YAML) Aqui está um amostra de fluxo de trabalho para criar e implantar um aplicativo React às páginas do GitHub: Etapa 3: Atualizando o package.json Adicione o campo da página inicial para que o React conheça o URL de implantação: Comprometa e empurre as alterações: Etapa 4: Observando o fluxo de trabalho em ação ir para o repositório do Github. Clique na guia Ações. Você verá o fluxo de trabalho executado automaticamente. Após o sucesso, visite para ver seu aplicativo ao vivo. Agora, cada empurrão para o principal acionará este pipeline CI/CD. Recursos avançados de CI/CD nas ações do GitHub O pipeline básico é suficiente para criar e implantar seu aplicativo, mas as ações do GitHub se tornam realmente poderosas quando você aproveita seus recursos avançados. Esses recursos ajudam você a escalar seus fluxos de trabalho, otimizar o desempenho e integrar CI/CD no ecossistema de DevOps mais amplo. 1. A matriz constrói em projetos do mundo real, você geralmente precisa testar seu aplicativo em vários ambientes-versões node.js diferentes, versões Python ou mesmo sistemas operacionais. Em vez de escrever fluxos de trabalho separados, você pode definir uma construção de matriz. Aqui está um exemplo de teste contra várias versões do Node.JS: isso executa o trabalho de teste em paralelo entre os nó 16, 18 e 20. Se o seu aplicativo depende da compatibilidade, isso é inestimável. 2. As dependências do cache de instalação de dependências do zero em cada fluxo de trabalho podem ser lentas. As ações do GitHub fornecem um mecanismo de cache interno que acelera as coisas significativamente reutilizando dependências entre as execuções. Exemplo para cache node_modules: isso garante que, a menos que o pacote lock.json altere, o NPM puxe dependências do cache em vez de reinstalar tudo. Para projetos grandes, isso pode economizar minutos em todas as compilações. 3. Regras e ambientes da filial Nem todas as filiais devem desencadear a implantação. Uma prática recomendada comum é: Executar testes nas filiais de recursos implantadas apenas ao se fundir nas filiais principais ou de liberação, aqui está como você pode definir esse comportamento: com esta configuração: cada solicitação de tração aciona os testes. Somente comprometeu as implantações principais do gatilho. Para ambientes de produção, você também pode usar ambientes do GitHub para exigir aprovações manuais antes de implantar. 4 Integrações de terceiros As ações do GitHub não se limitam à construção e implantação de código-integra-se a centenas de serviços externos para tornar seu pipeline mais rico. Alguns casos de uso popular: notificações de folga: envie mensagens quando um fluxo de trabalho for bem -sucedido ou falhar. Docker Builds: Construa e empurre imagens do Docker para o Docker Hub ou o GitHub Container Registry. Implantações em nuvem: implante na AWS, Azure ou Google Cloud usando ações oficiais. Por exemplo, implantando uma função lambda na AWS: 5. Fluxos de trabalho programados às vezes você precisa de automação que não seja acionada por alterações de código, como executar testes noturnos, backups ou verificações de segurança. As ações do GitHub suportam trabalhos de Cron para fluxos de trabalho programados: este exemplo executa o trabalho todos os dias às 2 da manhã UTC. 👉 Se você deseja explorar como a documentação se encaixa nesse processo, confira nosso artigo por que o CI/CD ainda não inclui documentação contínua. Depuração de oleodutos do Github Ações Às vezes, as coisas falham. Aqui estão dicas: Verifique os logs: Cada trabalho possui logs detalhados. Use ações/nó de configuração corretamente: as versões de nós incompatíveis podem interromper as compilações. Verifique se os segredos: verifique se o seu implantação está configurado corretamente. Runnagem a seco localmente: o teste aumenta localmente antes de empurrar. Por que as ações do GitHub para CI/CD? Existem muitas ferramentas de CI/CD por aí Jenkins, Gitlab CI, Circleci, mas as ações do GitHub rapidamente se tornaram uma favorita porque aproxima o CI/CD do seu código. Integração nativa do Github – Como seu código já está no GitHub, você não precisa de configuração ou webhooks extras. Os fluxos de trabalho são acionados diretamente de eventos como push ou pull_request. Os projetos gratuitos e econômicos-de código aberto recebem minutos generosos gratuitos, e até os repositórios privados recebem o suficiente para executar pipelines pequenos a médicos sem custo extra. Escalável-comece simples com um fluxo de trabalho e depois cresça em pipelines complexos e multi-ambientes com aprovações e implantações. Marketplace comunitária – Existem milhares de ações pré -construídas para tarefas como implantações da AWS, notificações de folga, construções de docker e linhagem sem necessidade de reinventar a roda. Segredos seguros e centralizados-são gerenciados no GitHub e, com as aprovações de proteção e meio ambiente, está pronto para produção. Para as equipes que já estão no Github, isso significa menos comutação de contexto: código, problemas, solicitações, compilações e implantações vivem em um só lugar. Essa simplicidade é o que faz com que as ações do GitHub se destacem da concorrência. Conclusão O IC/CD não é mais opcional, é o padrão para as equipes de desenvolvimento modernas. Com as ações do GitHub, você não precisa fazer malabarismos com várias ferramentas ou manter a infraestrutura complexa. Você pode construir, testar e implantar diretamente do seu repositório. Embora os pipelines de CI/CD sejam perfeitos para automatizar suas compilações e testes, nossa equipe da DeepDocs está trabalhando na automação de outro tipo de Artefcats de software, a sua documentação. Veja bem, a atualização do DOCS ainda é um processo manual e é frequentemente desertizado, pois é visto como uma tarefa chata ou de baixo valor. O DeepDocs cuida de manter seus documentos atualizados automaticamente com sua base de código, sem nenhum esforço manual adicional. É totalmente livre para tentar. Neste artigo, passamos pela configuração de um pipeline de CI/CD para um aplicativo React implantado nas páginas do Github, mas o mesmo fluxo de trabalho se aplica a aplicativos Node.js, Python ou Dockerized. Se você está apenas começando com o DevOps Pipelines, as ações do GitHub são uma das maneiras mais acessíveis de aprender. E depois de se sentir confortável, você o encontrará com você de projetos pessoais para implantações corporativas.

Fonte

Você pode ter perdido