Entorno de integración continua (4) -Construcción de proyectos de Maven y construcción de proyectos de oleoductos

1 construcción del proyecto Maven

1.1 Instale el complemento de integración de Maven

Inserte la descripción de la imagen aquí

1.2 Crear un proyecto Maven

Inserte la descripción de la imagen aquí

1.3 Elementos de configuración

El proceso de extracción de código e implementación remota es el mismo que el de un proyecto de estilo libre, excepto por la parte de "compilación".
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2 Construcción de proyecto de oleoducto

2.1 Introducción a Pipeline

1) Concepto

Pipeline, en términos simples, es un conjunto de marcos de flujo de trabajo que se ejecutan en Jenkins, que conecta tareas que originalmente se ejecutan de forma independiente en uno o varios nodos, y realiza un trabajo de visualización y orquestación de procesos complejos que es difícil de completar con una sola tarea.

2) El uso de Pipeline tiene las siguientes ventajas

  • Código: la canalización se implementa en forma de código y generalmente se registra en el control del código fuente, lo que permite al equipo editar, revisar e iterar su proceso de entrega.
  • Durable: ya sea que se trate de un reinicio del servidor planificado o no planificado, Pipeline es recuperable.
  • Se puede detener: Pipeline puede recibir información interactiva para determinar si continuar con la ejecución de Pipeline.
  • Multifuncional: Pipeline admite requisitos complejos de entrega continua en el mundo real. Admite bifurcación / unión, ejecución de bucle y ejecución paralela de tareas.
  • Extensible: el complemento Pipeline admite extensiones personalizadas de su DSL, así como múltiples opciones para la integración con otros complementos.

3) ¿Cómo crear Jenkins Pipeline?

  • La secuencia de comandos de canalización se implementa mediante el lenguaje Groovy, pero no es necesario que aprendamos por separado
  • GroovyPipeline admite dos sintaxis: sintaxis declarativa (declarativa) y canalización con secuencias de comandos (con secuencias de comandos)
  • También hay dos formas de crear Pipeline: puede ingresar directamente el script en la interfaz de la interfaz de usuario web de Jenkins; también puede crear un
    archivo de script Jenkinsfifile y colocarlo en la biblioteca de código fuente del proyecto (generalmente recomendamos directamente desde el control de código fuente ( SCM) en Jenkins) Cargue
    Jenkinsfifile Pipeline directamente ).

2.2 Instalar el complemento Pipeline

Administrar Jenkins-> Administrar complementos-> Complementos opcionales
Inserte la descripción de la imagen aquí
Después de instalar complementos, hay más tipos de "canalización" al crear proyectos (consulte el caso a continuación)

2.3 Inicio rápido de la sintaxis de la canalización

1) Pipeline declarativo

Cree la
Inserte la descripción de la imagen aquí
canalización del proyecto -> seleccione la plantilla HelloWorld, el
Inserte la descripción de la imagen aquí
contenido generado es el siguiente
Inserte la descripción de la imagen aquí

  • etapas: representa todas las etapas de ejecución de todo el pipeline, por lo general solo hay una etapa, que contiene múltiples etapas.
  • etapa: representa una determinada etapa en la canalización, puede aparecer n. Generalmente, se divide en etapas, como extraer código, compilar y construir e implementar.
  • pasos: representa la lógica que debe ejecutarse en una etapa. Dentro de los pasos se encuentran los scripts de shell, los códigos de extracción de git, la publicación remota de ssh, etc.

Escribe una canalización declarativa simple:

pipeline {
    
     
    agent any   
    stages {
    
     
        stage('拉取代码') {
    
     
            steps {
    
     
               echo '拉取代码' 
            }        
        }
        stage('编译构建') {
    
     
            steps {
    
     
                echo '编译构建' 
            } 
        }
        stage('项目部署') {
    
     
            steps {
    
     
                echo '项目部署' 
            } 
        } 
    }
}

Haga clic en construir, puede ver todo el proceso de construcción
Inserte la descripción de la imagen aquí

2 Pipe Pipeline con script 脚本 式 -Pipeline

Crear proyecto
imagen
Inserte la descripción de la imagen aquí
imagen

node {
    
    
    def mvnHome
    stage('Preparation') {
    
     // for display purposes
        // Get some code from a GitHub repository
        git 'https://github.com/jglick/simple-maven-project-with-tests.git'
        // Get the Maven tool.
        // ** NOTE: This 'M3' Maven tool must be configured
        // **       in the global configuration.
        mvnHome = tool 'M3'
    }
    stage('Build') {
    
    
        // Run the maven build
        withEnv(["MVN_HOME=$mvnHome"]) {
    
    
            if (isUnix()) {
    
    
                sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
            } else {
    
    
                bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
            }
        }
    }
    stage('Results') {
    
    
        junit '**/target/surefire-reports/TEST-*.xml'
        archiveArtifacts 'target/*.jar'
    }
}
  • Nodo: Nodo. ​​Un Nodo es un nodo Jenkins. Master o Agent es
    el entorno operativo específico para ejecutar Step . Se utilizará cuando hablemos de la arquitectura Master-Slave de Jenkins más adelante.
  • Etapa: una canalización se puede dividir en varias etapas, cada etapa
    representa un grupo de operaciones, como: construir, probar, implementar, etapa es un concepto de agrupación lógica.
    Paso: Paso. El paso es la unidad de operación más básica. Puede ser imprimir una oración o crear una imagen de Docker. Se proporciona mediante varios complementos de Jenkins, como el comando: sh'make ', que equivale a ejecutar en nuestro terminal de shell habitual. El comando make es el mismo.

Escriba un Pipeline con script simple, ¡el resultado de la construcción es el mismo que el declarativo!

node {
    
     
  def mvnHome 
  stage('拉取代码') {
    
     // for display purposes 
      echo '拉取代码' 
  }
  stage('编译构建') {
    
     
      echo '编译构建' 
  }
  stage('项目部署') {
    
     
      echo '项目部署' 
  }
}

paso 1: código de extracción

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      } 
    } 
}

paso 2: compila y construye

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      }
      stage('编译构建') {
    
     
        steps {
    
     
          sh label: '', script: 'mvn clean package' 
          }
       } 
    } 
}

paso 3: implementación del proyecto

pipeline {
    
     
    agent any 
    stages {
    
      
      stage('拉取代码') {
    
     
        steps {
    
     
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ff7972f4-c4bb-4b3b-a6c1-f6fdda5bbdea', url: 'http://10.99.200.110:8888/test/test-war.git']]]) 
        } 
      }
      stage('编译构建') {
    
     
        steps {
    
     
          sh label: '', script: 'mvn clean package' 
          }
       } 
       stage('项目部署') {
    
     
         steps {
    
     
           deploy adapters: [tomcat9(credentialsId: '6d072e85-02b4-4874-a0fa-c6eecb77fe79', path: '', url: 'http://10.99.200.111:8080')], contextPath: null, war: 'target/*.war' 
         } 
       }
    } 
}

3) Script de canalización de SCM

En este momento estamos escribiendo el código de la canalización directamente en la interfaz de usuario de Jenkins, lo que no es conveniente para el mantenimiento de la secuencia de comandos. Se recomienda poner la secuencia de comandos de la canalización en el proyecto (para llevar a cabo el control de versiones en conjunto)

Paso 1: escriba el archivo Jenkinsfifile

Cree un archivo Jenkinsfifile en el directorio raíz del proyecto, copie el contenido en el archivo, luego envíelo y envíelo a gitlab
o
cree un archivo Jenkins en la ruta raíz del proyecto actual de gitlab y copie el contenido en el archivo.

Aquí hay un ejemplo de cómo operar directamente en gitlab
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

paso 2: referencia al archivo en el proyecto

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

paso 3: construir inmediatamente

Inserte la descripción de la imagen aquí

paso 4: verificación del proyecto

imagen

Está todo aquí Para obtener más artículos, consulte la cuenta pública personal de WeChat. TODO En Linux, ¡escaneémoslo!
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44729138/article/details/115097743
Recomendado
Clasificación