JavaRush /Blogue Java /Random-PT /Integração contínua
Nikita Koliadin
Nível 40
Днепр

Integração contínua

Publicado no grupo Random-PT
Saudações, colegas! Cansado de forçar seu computador a construir um projeto constantemente? Então esse artigo é para você! Integração Contínua - 1Neste artigo tentarei apresentar de forma breve e clara o material sobre Integração Contínua (doravante simplesmente CI), responderei perguntas simples como: “O que é isso?”, “Por quê?” e porque?" e darei um exemplo de projeto de teste. Este artigo é destinado a um usuário experiente que esteja pelo menos familiarizado com Build System: Maven , saiba como usar Git e saiba como enviar projetos para GitHub ;

"O que é integração contínua?"

Vamos ver o que o Wiki nos diz sobre esta questão : Integração contínua (CI, do inglês Continuous Integration) é uma prática de desenvolvimento de software que consiste em mesclar cópias de trabalho em um branch de desenvolvimento principal comum várias vezes ao dia e realizar compilações automatizadas frequentes do projeto para o início. detecção de potenciais defeitos e soluções para problemas de integração. Assustador, não é? Vamos tentar explicar este termo em palavras simples: Integração contínua é um sistema de construção e teste automatizado de software com determinadas configurações em determinadas máquinas, a fim de detectar bugs e incompatibilidades. Ok, sem problemas, descobrimos, mas surge a seguinte questão lógica:

Por que precisamos de CI?

Vamos imaginar que você está escrevendo um projeto grande e há necessidade de adicionar/alterar funcionalidades. Você escreve, escreve testes, inicia com sucesso e tudo parece estar bem, mas não. Há situações em que uma alteração em uma funcionalidade afeta outra, outra em uma terceira e assim por diante, até que um bug apareça em algum lugar e ocorra um erro. Sim, você pode dizer que este é provavelmente um projeto mal elaborado e pode estar certo, mas e se não for, e essas conexões realmente deveriam estar lá? E se você estiver escrevendo e criando um projeto mais de uma vez, o que geralmente acontece? Você executou testes em sua funcionalidade recém-escrita e eles deram um resultado positivo. Você fez um commit rápido, depois empurrou para algum lugar e já está pensando em como vai fumar um charuto em casa enquanto bebe uísque caro, mas não. Infelizmente, seu colega ou chefe, não importa quem, diz que por causa do seu commit, toda a compilação travou. Você diz com perplexidade que é um programador, já testou tudo. Mas muitas vezes simplesmente não há tempo para testar constantemente todo o projeto, e você testou apenas o trecho de código no qual fez alterações, e não toda a montagem como um todo. É aqui que a CI vem em nosso auxílio. A cada push para qualquer recurso, o CI construirá seu projeto do zero, executará TODOS os testes e somente se todos os testes passarem e o projeto for construído, a construção receberá o status de aprovação . Caso contrário, você terá a oportunidade de voltar e ver o que deu errado. Então, é hora de fazer a pergunta “Por que isso e não de outra forma?” e dê uma olhada na implementação do software. Exemplo Como já disse, o artigo é destinado a quem conhece Maven e Git. Portanto, espero que você saiba como e o que faço além de configurar CI, etc.
  1. Primeiro, vamos criar um projeto de teste simples do Maven e criar uma classe nele que imprima “Hello World!” e executa alguma operação simples, e vamos escrever o teste mais simples para esta classe.

    Como resultado, deveríamos ter uma estrutura de projeto primitiva:

    Integração Contínua - 2

    Todas as fontes estarão no meu GitHub. Não importa o que você escreve no seu Main e quais testes serão realizados.

  2. Enviamos nosso projeto para o GitHub.

  3. Agora vem a parte divertida. Da CI, escolhi o Travis CI devido à sua disponibilidade e confiabilidade. Travis usa GitHub para hospedar seu código-fonte.

    Então, acesse o site do Travis CI e faça login via GitHub. No perfil conectamos nosso projeto:

    Integração Contínua - 3

    Tudo fica pronto para montagem a cada empurrão, mas a questão é COMO montar?

  4. Voltamos à nossa querida IDEA e criamos um arquivo .travis.yml

    Este arquivo é responsável pela configuração de compilação do Travis. Vejamos a configuração mais popular:

    • Você precisa especificar o idioma em que o projeto será implementado;
    • Especifique o caminho para os diretórios para tornar a construção mais rápida;
    • Especifique o método de notificação sobre montagem bem-sucedida ou malsucedida.

    Esta é a aparência de uma configuração típica do Travis:

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    Adicionei comentários, com links, para maior clareza.

  5. Entramos novamente no GitHub e abrimos o site do Travis , selecionamos o projeto e monitoramos a construção. Como resultado, recebemos uma notificação sobre uma compilação bem-sucedida:

    Integração Contínua - 4 Integração Contínua - 5

    Também no site podemos ver um crachá com a montagem bem-sucedida do nosso projeto, que podemos inserir em nosso README.md:

    Integração Contínua - 6
Links Úteis: Pode haver erros e omissões no texto. Obrigado pela sua atenção!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION