Construyendo un entorno CICD de producción basado en Jenkins ------- Día 84 de aprendizaje sobre operación y mantenimiento en el camino de principiante a maestro

Etapa 4

Hora: 21 de agosto de 2023

Participantes: Todos los miembros de la clase.

Contenido:

Cree un entorno CICD de producción basado en Jenkins

Tabla de contenido

1. Descripción general del medio ambiente

2. Introducción a Jenkins

(1) Jenkins incluye las siguientes características:

(2) Integración continua

1. Beneficios de la integración continua

2. El papel de la integración continua

3. Características de la integración continua

(3) Entrega continua

(4) Despliegue continuo

(5) Introducción a Maven

3. Instalar y configurar Jenkins

Método de instalación 1 de Jenkins: paquete de guerra

Método de instalación 2 de Jenkins: método rpm (recomendado)

Iniciar jenkins

Contenido de la instalación del paquete RPM

Descripción del archivo de configuración

operaciones web


1. Descripción general del medio ambiente

        A medida que los requisitos y la complejidad del desarrollo de software continúan aumentando, cómo colaborar mejor entre los miembros del equipo de desarrollo para garantizar la calidad del desarrollo de software se ha convertido gradualmente en una cuestión inevitable en el proceso de desarrollo.

        La implementación automatizada de Jenkins puede resolver tareas repetitivas como integración, prueba e implementación. La eficiencia de la integración de herramientas es significativamente mayor que la operación manual, y la integración continua puede obtener información de cambio de código antes, ingresando así a la fase de prueba antes y descubrir problemas, por lo que que el costo de resolverlos disminuirá significativamente; la integración continua acorta el tiempo en todos los aspectos del desarrollo, la integración, las pruebas y la implementación, acortando así el tiempo de espera en el medio; la integración continua también significa que el desarrollo, la integración, las pruebas y la implementación pueden ser sostenido.

        Por lo tanto, después de configurar el entorno de integración y entrega continua de Jenkins, puede transferir las tareas de publicación al servidor de integración. Utilice Maven (Ant), etc. para implementar la compilación, el lanzamiento y la implementación automatizados de proyectos Java.

        Estas herramientas pueden ayudar a automatizar lanzamientos, reversiones y otras acciones durante el proceso de compilación.

2. Introducción a Jenkins

 

        Jenkins es una herramienta de integración continua de código abierto escrita en Java. Después de una disputa con Oracle, el proyecto se independizó del Proyecto Hudson.

Sitio web oficial: https://jenkins.io/.

        Jenkins proporciona servicios de integración continua para el desarrollo de software. Se ejecuta en un contenedor de Servlet (Tomcat). Admite herramientas de gestión de configuración de software (SCM) (incluidas AccuRev SCM, CVS, Subversion, Git, Perforce, Clearcase y RTC) y puede ejecutar proyectos basados ​​en Apache Ant y Apache Maven, así como scripts de Shell arbitrarios y comandos por lotes de Windows. El principal desarrollador de Jenkins es Kosuke Kawaguchi. Jenkins es un software gratuito publicado bajo la licencia MIT.

        Jenkins puede monitorear problemas en el proceso de integración continua en tiempo real, proporcionar archivos de registro detallados y funciones de recordatorio, y también puede usar gráficos para mostrar vívidamente la tendencia y la estabilidad de la construcción del proyecto.

(1) Jenkins incluye las siguientes características:

Fácil de instalar: solo hay un jenkins.war, después de descargar el archivo del sitio web oficial, puede ejecutarlo directamente sin instalación adicional ni instalación de base de datos;

Fácil de configurar: proporciona una interfaz de configuración GUI amigable;

Soporte de cambios: Jenkins puede obtener y generar una lista de actualización de código desde el repositorio de código (SVN/Git) y enviarla a la información de salida de la compilación;

Admite enlaces permanentes: los usuarios acceden a Jenkins a través de la Web, y las direcciones de enlaces de estas páginas web son direcciones de enlaces permanentes que se pueden utilizar directamente en varios documentos;

Correo electrónico/RSS/IM integrado: cuando se completa una integración, los resultados de la integración se pueden recopilar en tiempo real a través de estas herramientas (se necesita una cierta cantidad de tiempo para crear una integración. Con esta función, puede hacer otras cosas mientras espera los resultados);

Informe de prueba JUnit/TestNG: se utiliza para proporcionar una función de informe de prueba detallada en forma de gráficos y otros formularios;

Admite compilación distribuida: Jenkins puede distribuir la compilación integrada y otros trabajos a varias computadoras para su finalización;

Información de huellas digitales del archivo: Jenkins guardará los archivos jar generados al crear la integración y qué versión se utilizó para la compilación de la integración;

Admite complementos de terceros: Jenkins admite complementos de terceros, lo que hace que Jenkins sea cada vez más poderoso.

(2) Integración continua

        La integración continua (inglés: integración continua, abreviada como CI ) es un proceso de ingeniería de software que integra las copias de trabajo del software de todos los ingenieros en una línea principal común (línea principal) varias veces al día.

        Este nombre fue propuesto por primera vez por Grady Booch en su método de distrito, pero no mencionó la integración varias veces al día. Posteriormente pasó a formar parte de la programación extrema (XP). El desarrollo basado en pruebas (TDD) a menudo se combina con pruebas unitarias automatizadas.

        La integración continua se propuso principalmente para resolver diversos problemas que enfrenta el software al integrar sistemas, a estos problemas Extreme Programming los llama infierno de integración.

 

        La integración continua enfatiza principalmente que los desarrolladores deben compilar y realizar pruebas (unitarias) inmediatamente después de enviar el nuevo código. Según los resultados de la prueba, podemos determinar si el nuevo código y el código original se integran correctamente. En pocas palabras: con frecuencia (varias veces al día) integre el código en el troncal.

1. Beneficios de la integración continua

·Los errores de integración se detectan temprano y son fáciles de rastrear porque las revisiones son pequeñas, lo que ahorra tiempo y costos en el proyecto.

· Evita el caos en el minuto previo a la fecha de lanzamiento, cuando todos intentan comprobar si hay una pequeña versión incompatible que han creado.

·Cuando una prueba unitaria falla o se produce un error, si el desarrollador necesita restaurar el código base a un estado libre de problemas sin depurar, solo es necesario descartar una pequeña parte de los cambios (porque las integraciones son frecuentes).

·Mantenga los programas "más recientes" disponibles para pruebas, demostraciones o lanzamientos.

· Las confirmaciones frecuentes de código alientan a los desarrolladores a crear código modular y de baja complejidad.

·Evitar que las ramas se desvíen significativamente del tronco. Si la integración no es frecuente y la columna vertebral se actualiza constantemente, será más difícil o incluso difícil de integrar en el futuro.

2. El papel de la integración continua

·Asegurar la calidad del código enviado por los desarrolladores del equipo y reducir la presión durante el lanzamiento del software;

·Cada enlace en la integración continua se completa automáticamente sin mucha intervención manual, lo que ayuda a reducir los procesos repetitivos para ahorrar tiempo, costos y carga de trabajo.

3. Características de la integración continua

·Es un proceso de prueba de integración automatizado y periódico, desde verificar el código, compilar y construir, ejecutar pruebas, registrar resultados, estadísticas de pruebas, etc., todo se completa automáticamente sin intervención manual;

·Se requiere un servidor de integración dedicado para realizar compilaciones de integración;

·Requiere soporte de herramienta de alojamiento de código;

(3) Entrega continua

        La entrega continua (inglés: entrega continua, abreviado como CD ) es una técnica de ingeniería de software que permite que el proceso de producción de productos de software se complete en un ciclo corto para garantizar que el software se pueda mantener de manera estable y continua en un estado que pueda publicarse. en cualquier momento..

        Su objetivo es hacer que la creación, prueba y lanzamiento de software sea más rápido y frecuente. Este método puede reducir el costo y el tiempo de desarrollo de software y reducir los riesgos.

        La entrega continua se basa en la integración continua e implementa el código integrado en "entornos similares a producción" que están más cerca del entorno operativo real. Por ejemplo, después de completar las pruebas unitarias, podemos implementar el código en el entorno de prueba conectado a la base de datos para realizar más pruebas. Si no hay problemas con el código, puede continuar implementándolo manualmente en el entorno de producción.

(4) Despliegue continuo

        La implementación continua (inglés: implementación continua, abreviada como CD ) es el siguiente paso en la entrega continua y se refiere a la implementación automática en el entorno de producción después de que el código pasa la revisión.

        A veces, el despliegue continuo también se confunde con la entrega continua. La implementación continua significa que todos los cambios se implementan automáticamente en el entorno de producción. La entrega continua significa que todos los cambios se pueden implementar en el entorno de producción, pero debido a consideraciones comerciales, puede optar por no implementarlos. Si desea implementar una implementación continua, primero debe implementar la entrega continua.

 

La implementación continua consiste en automatizar el proceso de implementación en el entorno de producción en función de la entrega continua.

Palabras clave: integración continua de CI/CD/entrega continua/implementación continua

(5) Introducción a Maven

        El modelo de objetos de proyecto (POM) de Maven es una herramienta de gestión de proyectos de software que puede gestionar la construcción, los informes y la documentación del proyecto a través de una pequeña información de descripción.

        Además de ofrecer capacidades de creación de programas, Maven también proporciona herramientas avanzadas de gestión de proyectos. Dado que las reglas de compilación predeterminadas de Maven son altamente reutilizables, a menudo se pueden construir proyectos simples con dos o tres líneas de scripts de compilación de Maven.

        Debido al enfoque orientado a proyectos de Maven, muchos proyectos de Apache Jakarta utilizan Maven al publicar documentos, y la proporción de proyectos empresariales que utilizan Maven sigue creciendo.

        La palabra Maven proviene del yiddish (judío), que significa acumulación de conocimiento, y se usó originalmente en el proyecto Jakata Turbine para simplificar el proceso de construcción. En ese momento, había algunos proyectos (con sus propios archivos de compilación Ant) que eran solo ligeramente diferentes, y CVS mantenía los archivos JAR. Así que espero que haya una manera estandarizada de construir proyectos, una manera clara de definir la composición del proyecto, una manera fácil de publicar información del proyecto y una manera fácil de compartir JAR entre múltiples proyectos.

3. Instalar y configurar Jenkins

1. Inicialización del 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 Funcionará Java Runtime Environment (JRE) o Java Development Kit (JDK).

1) La primera forma:

[root@jenkins ~]# yum -y instalar java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jenkins ~]# java -versión

versión openjdk "1.8.0_161"

Entorno de ejecución OpenJDK (compilación 1.8.0_161-b14)

VM de servidor OpenJDK de 64 bits (compilación 25.161-b14, modo mixto)

2) La segunda forma :

[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

[raíz@jenkins ~]#fuente /etc/profile

[root@jenkins ~]#java -versión

 

Método de instalación 1 de Jenkins: paquete de guerra

Primero instale Tomcat y coloque jenkins.war directamente en el directorio de aplicaciones web

Ejecute directamente a través del comando java -jar jenkins.war --httpPort=8080

Repositorio oficial: https://pkg.jenkins.io/redhat-stable/

Sitio espejo de software de código abierto de la Universidad de Tsinghua:

Índice de /jenkins/redhat/ | Estación espejo de software de código abierto de la Universidad de Tsinghua | Espejo de código abierto de Tsinghua

Simplemente descargue el paquete de datos correspondiente, estoy usando jenkins-2.401-1.1.noarch.rpm aquí.

Método de instalación 2 de Jenkins: método rpm (recomendado)

[root@jenkins ~]# rpm -ivh jenkins-2.181-1.1.noarch.rpm

 

Iniciar jenkins

[root@jenkins ~]# inicio de jenkins (mantenlo abierto)

[root@jenkins ~]# netstat -lnpt | grupo: 8080

 

Contenido de la instalación del paquete RPM

[raíz@jenkins ~]# rpm -ql jenkins

/etc/init.d/jenkins #Archivo de inicio

/etc/logrotate.d/jenkins # Archivo de configuración de división de registros

/etc/sysconfig/jenkins # archivo de configuración principal de jenkins

/usr/lib/jenkins # Almacena el directorio del paquete war

/usr/lib/jenkins/jenkins.war # paquete de guerra

/usr/sbin/rcjenkins # Comando

/var/cache/jenkins # directorio de descompresión del paquete war directorio de código web de jenkins

/var/lib/jenkins # directorio de trabajo de jenkins

/var/log/jenkins # Iniciar sesión

Descripción del archivo de configuración

[root@jenkins ~]# grep "^[aZ]" /etc/sysconfig/jenkins

JENKINS_HOME="/var/lib/jenkins" #directorio de trabajo de jenkins

JENKINS_JAVA_CMD=""

JENKINS_USER="jenkins" # jenkinx iniciar usuario

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

JENKINS_PORT="8080" # Puerto

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="no"

JENKINS_HANDLER_MAX="100" # Conexión máxima

JENKINS_HANDLER_IDLE="20"

JENKINS_ARGS=""

operaciones web

Prueba de acceso al navegador: http://192.168.1 00.1 3 1 :8080

 

Ingrese la clave secreta:

 

Desbloquear Jenkins, contraseña obtenida desde la línea de comando

 

 Ingrese la contraseña de autorización y haga clic en Siguiente

 

Elija instalar complementos recomendados

 

Descargar complementos automáticamente (el estado es verde, siguiente paso)

 

El estado es rojo, reinicie e instale nuevamente.

 

El estado es rojo y puede ingresar después de reiniciar, pero hay errores de instalación del complemento que afectarán

 

Después de ponerse verde, haga lo siguiente:

¡Cree un usuario administrador y elija usar la cuenta de administrador para continuar!

 

Configuración de instancia, guardar y ¡listo!

 

Haga clic para comenzar

¡Listo para usar!

Supongo que te gusta

Origin blog.csdn.net/2302_77582029/article/details/132409041
Recomendado
Clasificación