Estágio 4
Hora: 21 de agosto de 2023
Participantes: Todos os membros da turma
Conteúdo:
Crie um ambiente CICD de produção baseado em Jenkins
Índice
(1) Jenkins inclui os seguintes recursos:
1. Benefícios da integração contínua
2. O papel da integração contínua
3. Características da integração contínua
3. Instale e configure o Jenkins
Método de instalação 1 do Jenkins: pacote war
Método de instalação 2 do Jenkins: método rpm (recomendado)
Conteúdo da instalação do pacote RPM
Descrição do arquivo de configuração
1. Visão Geral do Ambiente
À medida que os requisitos e a complexidade do desenvolvimento de software continuam a aumentar, como colaborar melhor entre os membros da equipe de desenvolvimento para garantir a qualidade do desenvolvimento de software tornou-se gradualmente uma questão inevitável no processo de desenvolvimento.
A implantação automatizada do Jenkins pode resolver tarefas repetitivas, como integração, teste e implantação. A eficiência da integração da ferramenta é significativamente maior do que a operação manual; e a integração contínua pode obter informações de alteração de código mais cedo, entrando assim na fase de teste mais cedo, e descobrir problemas, então que o custo de resolvê-los cairá significativamente; a integração contínua encurta o tempo em todos os aspectos de desenvolvimento, integração, teste e implantação, encurtando assim o tempo de espera intermediário; integração contínua também significa que desenvolvimento, integração, teste e implantação podem ser sustentado.
Portanto, após configurar o ambiente de integração contínua e entrega contínua do Jenkins, você pode entregar as tarefas de publicação ao servidor de integração. Use Maven (Ant), etc. para implementar construção, lançamento e implantação automatizada de projetos Java.
Essas ferramentas podem ajudar a automatizar versões, reversões e outras ações durante o processo de construção.
2. Introdução ao Jenkins
Jenkins é uma ferramenta de integração contínua de código aberto escrita em Java. Após uma disputa com a Oracle, o projeto tornou-se independente do Projeto Hudson.
Site oficial: https://jenkins.io/.
Jenkins fornece serviços de integração contínua para desenvolvimento de software. Ele é executado em um contêiner Servlet (Tomcat). Ele suporta ferramentas de gerenciamento de configuração de software (SCM) (incluindo AccuRev SCM, CVS, Subversion, Git, Perforce, Clearcase e RTC) e pode executar projetos baseados em Apache Ant e Apache Maven, bem como scripts Shell arbitrários e comandos em lote do Windows. O principal desenvolvedor do Jenkins é Kosuke Kawaguchi. Jenkins é um software livre lançado sob a licença do MIT.
Jenkins pode monitorar problemas no processo de integração contínua em tempo real, fornecer arquivos de log detalhados e funções de lembrete, e também pode usar gráficos para exibir vividamente a tendência e a estabilidade da construção do projeto.
(1) Jenkins inclui os seguintes recursos:
Fácil de instalar: Existe apenas um jenkins.war. Depois de baixar o arquivo do site oficial, você pode executá-lo diretamente, sem instalação adicional ou instalação de banco de dados;
Fácil de configurar: Fornece uma interface amigável de configuração GUI;
Suporte a alterações: Jenkins pode obter e gerar uma lista de atualização de código do repositório de código (SVN/Git) e enviá-la para as informações de saída da compilação;
Suporta links permanentes: os usuários acessam o Jenkins através da Web, e os endereços dos links dessas páginas da Web são endereços de links permanentes, que podem ser usados diretamente em vários documentos;
E-mail/RSS/IM integrado: Quando uma integração é concluída, os resultados da integração podem ser coletados em tempo real por meio dessas ferramentas (leva um certo tempo para construir uma integração. Com esta função, você pode fazer outras coisas enquanto espera por os resultados);
Relatório de teste JUnit/TestNG: É usado para fornecer função de relatório de teste detalhado na forma de gráficos e outros formatos;
Suporte à construção distribuída: Jenkins pode distribuir construção integrada e outros trabalhos para vários computadores para conclusão;
Informações de impressão digital do arquivo: Jenkins salvará os arquivos jars gerados pela construção da integração e qual versão foi usada para a construção da integração;
Suporte a plug-ins de terceiros: Jenkins oferece suporte a plug-ins de terceiros, o que torna o Jenkins cada vez mais poderoso.
(2) Integração contínua
Integração contínua (Inglês: Integração contínua, abreviada como CI ) é um processo de engenharia de software que integra todas as cópias de trabalho do software dos engenheiros em uma linha principal comum (linha principal) várias vezes ao dia.
Este nome foi proposto pela primeira vez por Grady Booch em seu método distrital, mas ele não mencionou a integração várias vezes ao dia. Mais tarde, tornou-se parte da programação extrema (XP). O desenvolvimento orientado a testes (TDD) costuma ser combinado com testes unitários automatizados.
A integração contínua foi proposta principalmente para resolver diversos problemas enfrentados pelo software na integração de sistemas.A Extreme Programming chama esses problemas de inferno de integração.
A integração contínua enfatiza principalmente que os desenvolvedores devem construir e testar (unidade) imediatamente após enviar o novo código. Com base nos resultados do teste, podemos determinar se o novo código e o código original se integram corretamente. Simplificando: integre código com frequência (várias vezes ao dia) ao tronco.
1. Benefícios da integração contínua
·Erros de integração são detectados precocemente e fáceis de rastrear porque as revisões são pequenas, o que economiza tempo e custos do projeto.
· Evite o caos no minuto anterior à data de lançamento, quando todos estão tentando verificar a pequena versão incompatível que criaram.
·Quando um teste de unidade falha ou ocorre um erro, se o desenvolvedor precisar restaurar a base de código para um estado livre de problemas sem depuração, apenas uma pequena parte das alterações precisará ser descartada (porque as integrações são frequentes).
·Mantenha os programas “mais recentes” disponíveis para teste, demonstração ou lançamento.
· Comprometimentos frequentes de código incentivam os desenvolvedores a criar código modular e de baixa complexidade.
·Evitar que os ramos se desviem significativamente do tronco. Se a integração não for frequente e o backbone estiver em constante atualização, será mais difícil ou mesmo difícil integrá-la no futuro.
2. O papel da integração contínua
·Garantir a qualidade do código submetido pelos desenvolvedores da equipe e reduzir a pressão durante o lançamento do software;
·Cada link na integração contínua é concluído automaticamente sem muita intervenção manual, o que ajuda a reduzir processos repetitivos para economizar tempo, custos e carga de trabalho.
3. Características da integração contínua
·É um processo de teste de integração automatizado e periódico, desde a verificação do código, compilação e construção, execução de testes, registro de resultados, estatísticas de teste, etc., todos concluídos automaticamente sem intervenção manual;
·É necessário um servidor de integração dedicado para realizar compilações de integração;
·Requer suporte de ferramenta de hospedagem de código;
(3) Entrega contínua
Entrega contínua (inglês: entrega contínua, abreviada como CD ) é uma técnica de engenharia de software que permite que o processo de produção de produtos de software seja concluído em um ciclo curto para garantir que o software possa ser mantido de forma estável e contínua em um estado que possa ser liberado a qualquer momento. .
Seu objetivo é tornar a construção, o teste e o lançamento de software mais rápidos e frequentes. Este método pode reduzir o custo e o tempo de desenvolvimento de software e reduzir os riscos.
A entrega contínua é baseada na integração contínua e implanta o código integrado em “ambientes semelhantes aos de produção” que estão mais próximos do ambiente operacional real. Por exemplo, depois de concluirmos o teste unitário, podemos implantar o código no ambiente Staging conectado ao banco de dados para mais testes. Se não houver problemas com o código, você poderá continuar a implantá-lo manualmente no ambiente de produção.
(4) Implantação contínua
A implantação contínua (inglês: Continuous Deployment, abreviado como CD ) é a próxima etapa da entrega contínua e refere-se à implantação automática no ambiente de produção após o código ser aprovado na revisão.
Às vezes, a implantação contínua também é confundida com entrega contínua. A implantação contínua significa que todas as alterações são implantadas automaticamente no ambiente de produção. A entrega contínua significa que todas as alterações podem ser implementadas no ambiente de produção, mas devido a considerações comerciais, você pode optar por não implementar. Se quiser implementar a implantação contínua, primeiro você deve implementar a entrega contínua.
A implantação contínua visa automatizar o processo de implantação no ambiente de produção com base na entrega contínua.
Palavras-chave: integração contínua de CI/CD/entrega contínua/implantação contínua
(5) Introdução ao Maven
O Maven Project Object Model (POM) é uma ferramenta de gerenciamento de projetos de software que pode gerenciar a construção, relatórios e documentação do projeto por meio de uma pequena informação descritiva.
Além de apresentar recursos de construção de programas, o Maven também fornece ferramentas avançadas de gerenciamento de projetos. Como as regras de construção padrão do Maven são altamente reutilizáveis, projetos simples muitas vezes podem ser construídos com duas ou três linhas de scripts de construção do Maven.
Devido à abordagem orientada a projetos do Maven, muitos projetos do Apache Jakarta usam o Maven ao publicar documentos, e a proporção de projetos de empresas que usam o Maven continua a crescer.
A palavra Maven vem do iídiche (judaico), que significa acúmulo de conhecimento, e foi originalmente usada no projeto Jakata Turbine para simplificar o processo de construção. Naquela época, havia alguns projetos (com seus próprios arquivos de construção Ant) que eram apenas ligeiramente diferentes, e os arquivos JAR eram mantidos pelo CVS. Portanto, espero que haja uma maneira padronizada de construir projetos, uma maneira clara de definir a composição do projeto, uma maneira fácil de publicar informações do projeto e uma maneira fácil de compartilhar JARs entre vários projetos.
3. Instale e configure Jenkins
1. Inicialização do host
[root@localhost ~]# hostname jenkins
[root@localhost ~]# bash
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# iptables -F
[root@jenkins ~]# setenforce 0
2. Requisitos de software
Java 8 Java Runtime Environment (JRE) ou Java Development Kit (JDK) funcionarão.
1) A primeira forma:
[root@jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
[root@jenkins ~]# java -versão
versão openjdk "1.8.0_161"
Ambiente de execução OpenJDK (compilação 1.8.0_161-b14)
VM de servidor OpenJDK de 64 bits (compilação 25.161-b14, modo misto)
2) A segunda maneira :
[root@jenkins ~]#rm -rf /usr/bin/java
[root@jenkins ~]#rz
[root@jenkins ~]#tar xf jdk-17_linux-x64_bin.tar.gz
[root@jenkins ~]#mv jdk-17.0.8 /usr/local/java
[root@jenkins ~]#vim /etc/profile
[root@jenkins ~]#source /etc/profile
[root@jenkins ~]#java -versão
Método de instalação 1 do Jenkins: pacote war
Primeiro instale o Tomcat e coloque jenkins.war diretamente no diretório webapps
Execute diretamente através do comando java -jar jenkins.war --httpPort=8080
Repositório oficial: https://pkg.jenkins.io/redhat-stable/
Site espelho de software de código aberto da Universidade de Tsinghua:
Basta baixar o pacote de dados correspondente. Estou usando jenkins-2.401-1.1.noarch.rpm aqui.
Método de instalação 2 do Jenkins: método rpm (recomendado)
[root@jenkins ~]# rpm -ivh jenkins-2.181-1.1.noarch.rpm
Comece Jenkins
[root@jenkins ~]# jenkins start (mantenha-o aberto)
[root@jenkins ~]# netstat -lnpt | grep:8080
Conteúdo da instalação do pacote RPM
[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins #Arquivo de inicialização
/etc/logrotate.d/jenkins # Arquivo de configuração de divisão de log
/etc/sysconfig/jenkins # arquivo de configuração principal do jenkins
/usr/lib/jenkins # Armazena o diretório do pacote war
/usr/lib/jenkins/jenkins.war # pacote de guerra
/usr/sbin/rcjenkins # Comando
/var/cache/jenkins # diretório de descompressão de pacote war diretório de código web jenkins
/var/lib/jenkins # diretório de trabalho do jenkins
/var/log/jenkins#Registro
Descrição do arquivo de configuração
[root@jenkins ~]# grep "^[aZ]" /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins" #jenkins diretório de trabalho
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins" # usuário inicial jenkinx
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080" # Porta
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG = "não"
JENKINS_HANDLER_MAX="100" # Conexão máxima
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
operações web
Teste de acesso ao navegador: http://192.168.1 00.1 3 1 :8080
Digite a chave secreta:
Desbloquear Jenkins, senha obtida na linha de comando
Digite a senha de autorização e clique em Avançar
Escolha instalar plug-ins recomendados
Baixar plug-ins automaticamente (o status é verde, próxima etapa)
O status está vermelho, reinicie e instale novamente.
O status é vermelho e você pode entrar após reiniciar. No entanto, existem erros de instalação do plug-in, que afetarão
Depois de ficar verde, faça o seguinte:
Crie um usuário administrador e escolha usar a conta de administrador para continuar!
Configuração da instância, salve e pronto!
Clique para começar
Pronto para usar!