Directorio de artículos
Cero, configurar Tomcat
De forma predeterminada, Tomcat no tiene configurados los permisos de función de usuario.
Sin embargo, los proyectos de implementación de Jenkins posteriores al servidor de Tomcat deben usar usuarios de Tomcat, así que modifique la siguiente configuración de Tomcat, agregue usuarios y permisos
vi /opt/tomcat/conf/tomcat-users.xml
# 内容如下:
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
El usuario y la contraseña son: tomcat Nota: Para que el usuario recién configurado pueda iniciar sesión en Tomcat, es necesario modificar la siguiente configuración
vi /opt/tomcat/webapps/manager/META-INF/context.xml
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
# 把上面这行注释掉即可!
Reinicie Tomcat, acceda a la prueba,
ingrese tomcat tomcat para
configurar las credenciales de Tomcat
1. Despliegue remoto de paquetes de guerra para proyectos de estilo libre
1. Crea un proyecto de estilo libre
2. Agregar pasos de compilación
Compilar y empaquetar
3. Agregar operaciones posteriores a la compilación
Despliegue remoto
4. Construye ahora
5. Ver la salida de la consola
En segundo lugar, cree un proyecto de canalización para implementar de forma remota el paquete de guerra
La selección del proyecto es Pipeline流水线项目
,
- El concepto
Pipeline, en términos simples, es un conjunto de marco de flujo de trabajo que se ejecuta 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. - El uso de Pipeline tiene las siguientes ventajas (de la traducción de documentos oficiales):
Código: Pipeline 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: la canalización puede recibir información interactiva para determinar si continuar con la canalización. 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 y múltiples opciones para la integración con otros complementos. - ¿Cómo crear Jenkins Pipeline?
El script Pipeline se implementa mediante el lenguaje Groovy, pero no es necesario que aprendamos Groovy
Pipeline por separado. Admite dos gramáticas: gramática declarativa (declarativa) y Scripted Pipeline (scripted).
Pipeline también tiene dos métodos de creación: Sí Ingrese el script directamente en la interfaz de la interfaz de usuario web de Jenkins; también puede crear un archivo de script Jenkinsfile y colocarlo en la biblioteca de código fuente del proyecto (generalmente recomendamos cargar Jenkinsfile Pipeline directamente desde el control de código fuente (SCM) en Jenkins). ).
Instalar el complemento Pipeline Administrar Jenkins-> Administrar complementos-> Complementos opcionales
Después de instalar los complementos, hay más tipos de "pipeline" al crear proyectos
1. Extrae el código
Configure el repositorio de git, haga clic en流水线语法
Haga clic para generar secuencia de comandos de canalización
2. Construya y compile
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package -Dmaven.test.skip=true'
}
}
3. Implementación remota
Haga clic para generar secuencia de comandos de canalización
stage('远程部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war'
}
}
Guión completo:
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '614e4281-db76-4388-befc-c50588f5e751', url: 'https://gitee.com/L1692312138/ssm_web_war_jenkins.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package -Dmaven.test.skip=true'
}
}
stage('构建完成') {
steps {
echo '构建完成'
}
}
stage('远程部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '[email protected]'
)
}
}
}
Installation Pipeline Script desde el complemento SCM
, solo estamos escribiendo código directamente en la interfaz de interfaz de usuario de Jenkins Pipeline, por lo que el script no es un mantenimiento conveniente, se recomienda colocar el script Pipeline
en el proyecto (con control de versiones) 1) establecer el archivo Jenkinsfile en el directorio raíz del proyecto, Copie el contenido en el archivo
2)
Haga referencia al archivo en el proyecto Haga clic en Crear para ver la salida de la consola
En segundo lugar, implemente el paquete jar
1. Crea un proyecto de estilo libre
Proceso:
agregue pasos de operación posteriores a la compilación, luego configure la información ssh, escriba scripts, luego ejecute los scripts después de enviar el paquete, detenga el proceso e inicie el proceso.
2. Instale el complemento Publish Over SSH
Publicar sobre el complemento SSH
Luego configura ssh
3. Agregue pasos de compilación para compilar y empaquetar
4. Agregar pasos operativos posteriores a la compilación
Proyecto de configuración: "Agregar artefactos de compilación Sned a través de SSH para los pasos de la operación posterior a la compilación
-
Directorio de archivos de origen después de que se construya el proyecto
-
Quitar prefijo
-
Directorio de lanzamiento de directoty remoto
-
El comando Exec emitió el comando ejecutado
5. Escriba un script de shell
Primero busque el número de puerto del proyecto en ejecución por el nombre del proyecto, si existe, finalice el proceso
y luego reinicie el proyecto nuevamente.
Script de shell:
#!/bin/env bash
#PID=`ps -ef |grep 项目名称 |grep -v grep | awk '{print $2}'`
PID=`ps -ef |grep 'wxthepublic-1.0-SNAPSHOT.jar' |grep -v grep | awk '{print $2}'`
if [ ! "$PID" ]
then # 这里判断TOMCAT进程是否存在
echo $PID"进程不存在"
else
echo "进程存在 杀死进程PID$PID"
kill -9 $PID
fi
nohup java -jar 'wxthepublic-1.0-SNAPSHOT.jar' >/dev/null 2>log &
#根据重启后是否有当前应用判断启动是否成功
pid=$(ps -ef | grep java| grep 'wxthepublic-1.0-SNAPSHOT.jar'|awk -F '[ ]+' '{print $2}')
echo $pid
if [ -z $pid ]
then
echo "启动失败"
exit 1
else
echo 'wxthepublic-1.0-SNAPSHOT.jar' : $pid "启动成功"
fi
6. Construya ahora
Haga clic en Generar ahora para ver
el paquete jar que se ha escrito en el directorio de salida de la consola .