Implementación del proyecto backend del titular de Dark Horse_Integración continua Configuración de Jenkins

Implementación del proyecto_Integración continua

1 Introducción al contenido de hoy

1.1 ¿Qué es la integración continua?

La integración continua (CI para abreviar) se refiere a la integración de código en el troncal con frecuencia (varias veces al día)

Componentes de la integración continua

Un proceso de compilación automático, desde verificar el código, compilar y construir, ejecutar pruebas, registrar resultados, estadísticas de pruebas, etc., se completa automáticamente sin intervención manual.

Un repositorio de código requiere un software de control de versiones para asegurar la mantenibilidad del código, también sirve como biblioteca de materiales para el proceso de construcción, generalmente se utiliza SVN o Git.

Jenkins, un servidor de integración continua , es simple de configurar y fácil de usar .

1.2 Beneficios de la integración continua

1. Reducir los riesgos: dado que la integración continua construye, compila y prueba continuamente, los problemas se pueden descubrir muy temprano , por lo que el costo de reparación es bajo;

2. Verificar continuamente el estado del sistema para reducir los problemas causados ​​por riesgos de liberación ;

3. Reducir el trabajo repetitivo;

4. Despliegue continuo, proporcionando paquetes de unidades desplegables;

5. Entregar continuamente las versiones disponibles;

6. Mejorar la confianza del equipo;

1.3 Contenido de hoy

2 Modelo de desarrollo de software

2.1 Ciclo de vida del desarrollo de software

El ciclo de vida del desarrollo de software también se denomina SDLC (Ciclo de vida de desarrollo de software), que es un conjunto de procesos de planificación, desarrollo, prueba e implementación . Como se muestra abajo:

  • análisis de la demanda

Esta es la primera fase del ciclo de vida donde el equipo realiza un análisis de un plan de viabilidad basado en los requisitos del proyecto . Los requisitos del proyecto pueden provenir de la empresa o de los clientes. Esta etapa se trata principalmente de la recopilación de información y también puede tratarse de mejorar proyectos existentes o iniciar un nuevo proyecto. También es necesario analizar el presupuesto del proyecto , qué aspectos se pueden beneficiar y su distribución, este es también el objetivo de la creación del proyecto.

  • diseño

La segunda etapa es la etapa de diseño, la arquitectura del sistema y su estado satisfactorio (es decir, cómo se verá y qué funciones tendrá) y la creación de un plan de proyecto. Los planos se pueden presentar mediante diagramas, diseños o texto .

  • lograr

La tercera fase es la fase de implementación, donde el director del proyecto crea y asigna trabajo a los desarrolladores , quienes desarrollan código en función de las tareas y objetivos definidos en la fase de diseño. Dependiendo del tamaño y la complejidad del proyecto, su finalización puede tardar varios meses o más.

  • prueba

Los evaluadores realizan pruebas de código , incluidas pruebas funcionales, pruebas de código, pruebas de estrés, etc.

  • evolución

La etapa final es la etapa de evolución, mejora y mantenimiento continuo del producto.Dependiendo del uso del usuario, es posible que sea necesario modificar ciertas funciones, corregir errores, agregar funciones, etc.

2.2 Modelo en cascada de desarrollo de software

El modelo en cascada es el modelo de desarrollo de software más famoso y utilizado. El modelo en cascada es una serie de procesos de desarrollo de software. Fue criado a partir de la fabricación. Un proceso altamente estructurado fluye en una dirección, algo así como una línea de producción . Al comienzo de la creación del modelo en cascada, no había ningún otro modelo desarrollado, y muchas cosas quedaron en manos de los desarrolladores para que las adivinaran y desarrollaran. Un modelo de este tipo solo es adecuado para el desarrollo de software simple, pero ya no es adecuado para el desarrollo actual.

La siguiente figura ilustra el modelo de desarrollo de software.

Ventaja

Desventajas

Fácil de usar y entender

La división de cada etapa es completamente fija y se genera una gran cantidad de documentos entre etapas, lo que aumenta enormemente la carga de trabajo.

Una vez completada la fase anterior, sólo deberás centrarte en las fases siguientes.

Dado que el modelo de desarrollo es lineal, los usuarios no pueden ver los resultados del desarrollo hasta el final de todo el proceso, lo que aumenta los riesgos de desarrollo.

Proporciona nodos de inspección divididos por etapas para el proyecto.

La principal desventaja del modelo en cascada es que no puede adaptarse a los cambios en las necesidades de los usuarios.

2.3 Desarrollo ágil de software

  • ¿Qué es el desarrollo ágil?

El núcleo del desarrollo ágil es el desarrollo iterativo y el desarrollo incremental.

  • ¿Qué es el desarrollo iterativo?

Para grandes proyectos de software, el método de desarrollo tradicional es desarrollar en un ciclo grande (como un año), y todo el proceso es un "gran desarrollo"; el método de desarrollo iterativo es diferente, divide , es decir, un "gran desarrollo" se convierte en múltiples "pequeños desarrollos", cada pequeño desarrollo tiene el mismo proceso, por lo que parece que se repiten los mismos pasos.

Por ejemplo, SpaceX quiere construir un cohete de alto empuje para enviar humanos a Marte. Sin embargo, en lugar de construir un gran cohete desde el principio, primero construyó el cohete pequeño más rudimentario, el Falcon 1. Como resultado, explotó en el primer lanzamiento y no fue hasta el cuarto lanzamiento que entró con éxito en órbita. Luego se desarrolló el cohete mediano Falcon 9, que fue lanzado 70 veces en nueve años. Finalmente, se desarrolló el cohete Falcon Heavy. Si SpaceX no hubiera utilizado el desarrollo iterativo, es posible que no pudiera volar hasta ahora.

  • ¿Qué es el desarrollo incremental?

Cada versión del software agregará una función completa que los usuarios podrán percibir . En otras palabras, las iteraciones se dividen según las nuevas características.

Por ejemplo, una empresa de bienes raíces desarrolla una comunidad de 10 edificios. Si se adopta el modelo de desarrollo incremental, la primera iteración de la empresa es entregar el Edificio 1 y la segunda iteración es entregar el Edificio 2... Cada iteración es para completar un edificio completo. En lugar de cavar los cimientos de 10 edificios en la primera iteración, construir el esqueleto de cada edificio en la segunda iteración y erigir el techo en la tercera iteración...

  • ¿Cómo iterar en el desarrollo ágil?

Aunque el desarrollo ágil divide el desarrollo de software en múltiples iteraciones , también requiere que cada iteración sea un ciclo completo de desarrollo de software y que la gestión formal del proceso se lleve a cabo de acuerdo con la metodología de ingeniería de software.

  • ¿Cuáles son los beneficios del desarrollo ágil?
    • entrega temprana

El primer beneficio del desarrollo ágil es la entrega temprana, lo que reduce en gran medida los costos .

Tomemos como ejemplo la empresa de bienes raíces de la sección anterior. Si seguimos el tradicional "modelo de desarrollo en cascada", primero cavamos los cimientos de 10 edificios, luego construimos los esqueletos y luego levantamos los techos. Cada etapa espera hasta que Una vez finalizada la etapa anterior, se necesitarán dos años para entregar 10 edificios a la vez. Es decir, si no se tienen en cuenta las preventas, el proyecto tendrá que esperar hasta dos años para recuperar el dinero. El desarrollo ágil requiere que el edificio número 1 se entregue después de seis meses y, a partir de entonces, se entregue un edificio cada dos meses . Por lo tanto, se puede devolver el 10% del dinero en medio año y habrá flujo de caja todos los meses, lo que reduce en gran medida la presión financiera.

  • reducir el riesgo

El segundo beneficio del desarrollo ágil es comprender las necesidades del mercado de manera oportuna y reducir el riesgo de incompatibilidad de productos . Piense en qué situación causará la pérdida menor: construir los 10 edificios y luego descubrir que no se pueden vender, o construir el primer edificio y luego descubrir que no se puede vender y así mejorar o detener la construcción de los siguientes 9 edificios. ?

3 configuración de instalación de Jenkins

3.1 Introducción a Jenkins

Jenkins es una popular herramienta de integración continua (integración continua) de código abierto que se usa ampliamente en el desarrollo de proyectos y tiene funciones como compilación, prueba e implementación automatizadas. Sitio web oficial: Jenkins .

Características de Jenkins:

  • El lenguaje Java de código abierto desarrolla herramientas de integración continua que admiten la integración continua y la implementación continua.
  • Fácil de instalar , implementar y configurar: se puede instalar a través de yum o descargar el paquete war y se puede instalar e implementar rápidamente a través del contenedor Docker, lo que puede facilitar la gestión de la configuración de la interfaz web.
  • Notificación de mensajes e informe de prueba : integre RSS/correo electrónico para publicar los resultados de la compilación a través de RSS o notifique por correo electrónico cuando se complete la compilación para generar un informe de prueba JUnit/TestNG.
  • Compilación distribuida : admite Jenkins para permitir que varias computadoras construyan/prueben juntas.
  • Identificación de archivos: Jenkins puede rastrear qué compilación genera qué archivos jar, qué compilación usa qué versión de jar, etc.
  • Compatibilidad con complementos enriquecidos:
    • Al admitir complementos de extensión, puede desarrollar herramientas adecuadas para su propio equipo, como git, svn, maven, docker, etc.

Instalación de Jenkins y configuración del entorno de integración continua.

1) Primero, los desarrolladores envían código todos los días al repositorio de Git.

2) Luego, como herramienta de integración continua, Jenkins usa la herramienta Git para extraer el código del almacén de Git al servidor de integración y luego coopera con JDK, Maven y otro software para completar la compilación del código, la prueba y revisión del código y las pruebas. empaquetado y otras tareas.En este proceso, cada Si un paso sale mal, todo el proceso debe volver a ejecutarse.

3) Finalmente, Jenkins distribuye el paquete jar o war generado al servidor de prueba o al servidor de producción, y los probadores o usuarios pueden acceder a la aplicación.

3.2 Configuración del entorno Jenkins

3.2.1 Instalación y configuración de Jenkins

Se pueden importar imágenes de los datos:

服务器用户名:root   密码:itcast
jenkins  用户名:itcast   密码:itcast
  1. Instalar usando el método YUM

Agregue la fuente de instalación de jenkins:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Ejecute el comando yum para instalar:

yum -y install jenkins
  1. Utilice el método del paquete de instalación RPM

Dirección de descarga del paquete de instalación de Jenkins

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm

Para realizar la instalación:

rpm -ivh jenkins-2.190.1-1.1.noarch.rpm
  1. Configuración:

Modificar el archivo de configuración:

vi /etc/sysconfig/jenkins

Contenido de modificación:

# 修改为对应的目标用户, 这里使用的是root
$JENKINS_USER="root"
# 服务监听端口
JENKINS_PORT="16060"

Permisos de directorio:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

Reanudar:

systemctl restart jenkins

Si el inicio falla, aparece un mensaje de error:

Starting Jenkins bash: /usr/bin/java: No such file or directory

Cree un enlace suave al entorno JAVA:

ln -s /usr/local/jdk/bin/java /usr/bin/java
  1. Configuración de inicialización en segundo plano de gestión

http://192.168.200.100:16060/

Se requiere una contraseña administrativa, que se puede encontrar en:

cat /var/lib/jenkins/secrets/initialAdminPassword

De acuerdo con la configuración predeterminada, instale todos los complementos recomendados.

Este paso lleva mucho tiempo de espera. Una vez completada la instalación, cree un usuario administrador:

Configurar dirección de acceso:

Una vez completada la configuración, se reiniciará y luego podrá ver el fondo de administración:

3.2.2 Instalación del complemento Jenkins

Antes de implementar la integración continua, debe asegurarse de que los siguientes complementos estén instalados correctamente .

  • Complemento de integración de Maven: complemento de gestión de integración de Maven.
  • Complemento Docker: complemento de integración de Docker.
  • Complemento GitLab: complemento de integración de GitLab.
  • Publicar a través de SSH: complemento de publicación remota de archivos.
  • SSH: complemento de ejecución remota de scripts.

metodo de instalacion:

  1. Ingrese a [Administración del sistema]-[Administración de complementos]
  2. Haga clic en [Complementos opcionales] en la pestaña

Busque el nombre del complemento en el cuadro de filtro

  1. Verifique el complemento y haga clic para instalarlo directamente.
Tenga en cuenta que si no hay un botón de instalación, debe cambiar la configuración.
En la configuración avanzada de instalación del complemento, modifique la conexión del sitio de actualización a: http://updates.jenkins.io/update-center. guardar _

3.2.3 Configuración de instalación de Git

  1. método de instalación mmm
yum -y install git
  1. Instalar usando el paquete de código fuente
    • Instalar paquetes de dependencia
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install gcc perl-ExtUtils-MakeMaker
  • Si ya se instaló una versión anterior, desinstálela primero. Si no está instalada, ignórela.
yum remove git
  • Descargar paquete de código fuente
cd /usr/local
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz
tar -xvf git-1.8.3.1.tar.gz

También puede instalar otras versiones, dirección: Index of /pub/software/scm/git/

  • compilar e instalar
cd git-1.8.3.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
  1. Verifique la versión de git
[root@localhost jenkins]# git version
git version 1.8.3.1

3.2.4 Configuración de instalación de Maven

  1. Descargue el paquete de instalación

Dirección de descarga: Maven - Descargar Apache Maven

  1. Descomprima el paquete de instalación
cd /usr/local
unzip -o apache-maven-3.6.1.zip 

Sube el almacén local y descomprímelo.

  1. Configuración

Configuración de variables de entorno

vi /etc/profile

Aumentar:

export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.1
export PATH=$PATH:$MAVEN_HOME/bin

Si los permisos no son suficientes, debe aumentar los permisos del directorio actual

chmod 777 /usr/local/maven/apache-maven-3.6.1/bin/mvn

Modifique la configuración del almacén de imágenes:

vi /usr/local/maven/apache-maven-3.6.1/conf/settings.xml

Debe empaquetar y cargar el almacén local en el servidor (se descargará automáticamente si no lo carga)

Luego especifique la configuración del almacén después de cargar

3.2.5 Configuración de instalación de Docker

  1. Actualizar la versión del paquete
yum -y update
  1. Desinstalar la versión anterior
yum -y remove docker  docker-common docker-selinux docker-engine
  1. Instalar paquetes de dependencia de software
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. Establezca la fuente de yum en Alibaba Cloud
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. Verifique la versión de Docker después de la instalación
docker -v
  1. puesta en marcha

Configurar el inicio:

systemctl enable docker

Iniciar ventana acoplable

systemctl start docker

3.2.6 Instalación y configuración del almacén privado de Docker Registry

3.3 Configuración de la herramienta Jenkins

  1. Ingrese a [Administración del sistema] --> [Configuración global de herramientas]

  1. MAVEN configurar ajustes globales

  1. Especificar la configuración de JDK

  1. Especifique el directorio MAVEN

  1. Especificar el directorio DOCKER

Si no conoce el directorio donde está instalado Docker, puede usar el comando para ver el directorio donde whereis dockerestá instalado Docker.

4 Implementación del proyecto backend

4.1 Cambio de entorno múltiple

En el proceso de desarrollo e implementación del proyecto, generalmente existen tres conjuntos de entornos de proyecto.

  • Desarrollo: entorno de desarrollo
  • Producción: entorno de producción .
  • Prueba: entorno de prueba

Por ejemplo: la conexión mysql del entorno de desarrollo es local y el entorno de producción necesita conectarse al entorno mysql en línea.

4.2 Conmutación multientorno-configuración multientorno en microservicios

1. Agregue una nueva configuración en bootstrap.yml en microservicio

server:
  port: 51801
spring:
  application:
    name: leadnews-user
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.200.130:8848
      config:
        server-addr: 192.168.200.130:8848
        file-extension: yml
  profiles:
    active: dev

2. Agregue archivos de configuración para cada entorno en el centro de configuración de nacos, por ejemplo, agréguelos al microservicio de usuario.

Modifique bootstrap.yml para agregar contenido

spring:
  profiles:
    active: dev

Cree la configuración multiambiente de nacos correspondiente:

Precauciones:

La denominación del atributo DataID está estandarizada:

  • prefijo,
    • De forma predeterminada, se usa ${spring.application.name} , que también se puede configurar a través de spring.cloud.nacos.config.prefix.
  • spring.profile.active es el perfil correspondiente al entorno actual.
    • Para obtener más información, consulte la documentación de Spring Boot. Nota: Cuando spring.profile.active está vacío, el conector correspondiente no existirá y el formato de empalme de dataId se convierte en ${prefix}.${file-extension}
  • file-exetension, que es el formato de datos del contenido de configuración, se puede configurar a través del elemento de configuración spring.cloud.nacos.config.file-extension . Actualmente, solo se admiten propiedades y tipos yaml.

4.3 Idea general

Objetivo: implementar los microservicios relacionados con la aplicación de Heima Toutiao en el servidor 192.168.200.100

4.4 Configuración de Docker de integración de servicios

Objetivo: cada microservicio implementado consiste en crear primero una imagen de la ventana acoplable y luego crear el contenedor correspondiente para comenzar.

Método 1: el microservicio local se empaqueta y se carga en el servidor y se escribe el Dockerfile.

Método 2: con el complemento dockerfile-maven-plugin, puede crear directamente el microservicio como un espejo (más sin problemas)

Configuración de Docker de integración de servicios

Cada microservicio introduce esta dependencia, tomando como ejemplo el microservicio heima-leadnews-user

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>heima-leadnews-service</artifactId>
        <groupId>com.heima</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>heima-leadnews-user</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <docker.image>docker_storage</docker.image>
    </properties>

    <build>
        <finalName>heima-leadnews-user</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <repository>${docker.image}/${project.artifactId}</repository>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Archivo Dockerfile de integración de servicios

# 设置JAVA版本
FROM java:8
# 指定存储卷, 任何向/tmp写入的信息都不会记录到容器存储层
VOLUME /tmp
# 拷贝运行JAR包
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
# 设置JVM运行参数, 这里限定下内存大小,减少开销
ENV JAVA_OPTS="\
-server \
-Xms256m \
-Xmx512m \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m"
#空参数,方便创建容器时传参
ENV PARAMS=""
# 入口点, 执行JAVA运行命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]

4.5 Configuración básica del paquete de dependencias de Jenkins

Antes de ejecutar el microservicio, debe instalar los paquetes jar dependientes en el almacén local, por lo que el primer paso debería ser extraer el código de git e instalar las dependencias básicas en el almacén.

1. Proyecto principal heima-leadnews

2. Busque el repositorio de git que especificó y configure el nombre de usuario y la contraseña.

3. Instale la información de dependencia básica en el almacén local del servidor.

4. Ejecución

Registro de ejecución, capturas de pantalla parciales, el siguiente es el código extraído de git

Registros de ejecución, capturas de pantalla parciales, compilación y empaquetado.

Registro de ejecución, capturas de pantalla parciales, ejecución exitosa

4.6 Configuración del paquete de microservicios Jenkins

Todos los microservicios están empaquetados de manera similar, tomando como ejemplo el microservicio heima-leadnews-user

1. Crea una nueva tarea

2. Busque el repositorio de git que especificó y configure el nombre de usuario y la contraseña.

3. Ejecute el comando maven

clean install -Dmaven.test.skip=true  dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-user/pom.xml

Nota: Configure de acuerdo con su ruta de código real

-Dmaven.test.skip=true omite la prueba

dockerfile:build inicia el complemento dockerfile para construir el contenedor

-f heima-leadnews-user/pom.xml especifica el archivo que se creará (debe ser pom)

4. Y ejecute el script de shell.

if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )" ]
 then
 #删除之前的容器
 docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )
fi
 # 清理镜像
docker image prune -f 
 # 启动docker服务
docker run -d --net=host -e PARAMS="--spring.profiles.active=prod"  --name $JOB_NAME docker_storage/$JOB_NAME

5. Registro de ejecución

código de extracción

Compilar y empaquetar

Construir imagen

Limpiar el contenedor y crear un nuevo contenedor.

4.7 Implementar servicios en servidores remotos

Objetivo: utilizar jenkins (192.168.200.100) para empaquetar e implementar microservicios en el servidor 192.168.200.130

4.7.1 Instalar y configurar almacén privado

Para la configuración del entorno de integración continua, Jenkins publicará una gran cantidad de microservicios. Para interactuar con varias máquinas, puede utilizar las funciones de guardar y exportar imágenes de Docker combinadas con SSH . Sin embargo, esta interacción es engorrosa, inestable e inconveniente. para administrar Aquí logramos esto construyendo un almacén privado Docker, que es algo similar a un almacén GIT. Administra los recursos de manera centralizada y el cliente puede extraerlos o actualizarlos.

  1. Descargue la última imagen del Registro
docker pull registry:latest
  1. Inicie el servicio espejo del Registro
docker run -d -p 5000:5000 --name registry -v /usr/local/docker/registry:/var/lib/registry registry:latest

Puerto de asignación 5000; -v asocia el volumen de datos reflejados en el Registro con archivos locales para facilitar la gestión y el mantenimiento de los datos en el Registro.

  1. Ver recursos del almacén

Dirección de acceso: http://192.168.200.100:5000/v2/_catalog

El inicio es normal y puedes ver el retorno:

{"repositories":[]}

Actualmente no hay ninguna imagen cargada y se muestran datos vacíos.

Si la carga se realiza correctamente, podrá ver los datos:

  1. Configurar el cliente Docker

Para su uso en un entorno de producción normal, el servicio HTTPS debe configurarse para garantizar la seguridad. Para el desarrollo interno o las pruebas de entornos LAN integrados, se puede utilizar un método simple sin control de seguridad.

Primero asegúrese de que el cliente Docker se haya instalado en la máquina en el entorno de integración continua y luego realice las siguientes modificaciones:

vi /lib/systemd/system/docker.service

Contenido de modificación:

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.200.100:5000

Apunte a la IP del servicio y al puerto donde está instalado el Registro.

El reinicio tiene efecto:

systemctl daemon-reolad
systemctl restart docker.service

4.7.2 Instalar complementos en jenkins

4.7.3 Enlace del servidor remoto de configuración del sistema Jenkins

Ubicación: Administrar Jenkins-->Configurar sistema

Necesito agregar credenciales

Ubicación: Administrar Jenkins-->Administrar credenciales

Agregue nombre de usuario y contraseña para vincular al servidor 130

4.7.4 La creación del proyecto Jenkins es la misma que la de otros microservicios

Crear un proyecto con referencia al microservicio de usuario creado previamente

4.7.5 Configuración de parámetros

4.7.6 Construir y ejecutar Ejecutar shell

comando experto

clean install -Dmaven.test.skip=true dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-article/pom.xml

script de shell

image_tag=$docker_registry/docker_storage/$JOB_NAME
echo '================docker镜像清理================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )" ]
 then
 #删除之前的容器
 docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )
fi
 # 清理镜像
docker image prune -f 

# 创建TAG
docker tag docker_storage/$JOB_NAME $image_tag
echo '================docker镜像推送================'
# 推送镜像
docker push $image_tag
# 删除TAG
docker rmi $image_tag
echo '================docker tag 清理 ================'

4.7.7 Ejecutar scripts en servidores remotos

Script de Shell ejecutado por un servidor remoto

echo '================拉取最新镜像================'
docker pull $docker_registry/docker_storage/$JOB_NAME

echo '================删除清理容器镜像================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )" ]
 then
 #删除之前的容器
 docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{
     
     {.ID}}' )
fi
 # 清理镜像
docker image prune -f 

echo '===============启动容器================'
docker run -d   --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME $docker_registry/docker_storage/$JOB_NAME

4.7.8 Una vez completada la construcción, puede iniciar sesión en el servidor 130 para verificar si hay imágenes y contenedores relacionados.

espejo

envase

4.8 Prueba de depuración conjunta

1. Implemente la puerta de enlace del lado de la aplicación consultando el microservicio heima-leadnews-user en Jenkins.

2. Modifique la dirección de proxy inverso de configuración en nginx local a 100 este servidor: heima-leadnews-app.conf

upstream  heima-app-gateway{
	server 192.168.200.100:51601;
}

3. Inicie nginx y abra la página para realizar pruebas.

Configuración del disparador 5 jenkins

5.1 URL activa la compilación remota

Active la compilación remota y modifique la configuración de jenkins de la siguiente manera

URL de compilación del activador: http://192.168.200.100:16060/job/leadnews-admin/build?token=88888888

5.2 Activado después de que se construyen otros proyectos

Configurar los proyectos que deben activarse

5.3 Construcción programada

Construir periódicamente

Las cadenas de tiempo de izquierda a derecha son: hora, día, mes, semana.

Expresión de tiempo de construcción-tiempo

Las cadenas de tiempo de izquierda a derecha son: hora, día, mes, semana.

componente

significado

Rangos

primera parte

minuto

0~59

la segunda parte

hora (hora)

0~23

la tercera parte

día día)

1~31

cuarta parte

mes(mes)

1~12

la quinta parte

semana(semana)

0~7, 0 y 7 representan el domingo

  • El símbolo H representa un número aleatorio.
  • Símbolo * Cualquier valor en el rango de valores

Caso:

  • Construir cada 30 minutos: H/30 * * * * 10:02 10:32
  • Construir cada 2 horas: HH/2 * * *
  • Construya tres veces al día a las 8:00, 12:00 y 22:00: (varios puntos de tiempo están separados por comas) 0 8,12,22 * * *
  • H 12 se construye regularmente a las 12 del mediodía todos los días * * *
  • El H 18 se construye regularmente todos los días a las 18:00 * * *

5.4 Encuesta

Encuesta SCM

El sondeo de SCM consiste en escanear el código del repositorio de códigos local en busca de cambios en un momento específico. Si hay cambios en el código, se activará la compilación del proyecto.

Jenkins escaneará periódicamente el código local de todo el proyecto, lo que aumenta la sobrecarga del sistema y no se recomienda.

Supongo que te gusta

Origin blog.csdn.net/m0_67184231/article/details/132901662
Recomendado
Clasificación