当前位置: 首页 > news >正文

Jenkins流水线项目发布

Jenkins流水线项目发布

一、两台主机配置

主机名称IP地址需要的应用服务工具包系统
Node1192.168.100.100tomcat、jenkinsgit、mavenRHEL8
node2192.168.100.110tomcatRHEL8

二、部署tomcat(两台)

(1)关闭防火墙selinux
[root@server ~]# systemctl status firewalld.service 
○ firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enable>Active: inactive (dead)Docs: man:firewalld(1)[root@server ~]# getenforce 
Disabled
(2)时钟同步
[root@server ~]# systemctl restart chronyd
[root@server ~]# systemctl enable chronyd
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@server ~]# hwclock -w
(3)部署安装源
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
redhat.repo  server.repo
[root@server yum.repos.d]# rm -rf *
[root@server yum.repos.d]# ls
[root@server yum.repos.d]# vim server.repo
[root@server yum.repos.d]# cat server.repo
[baseos]
name=baseos
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0[appstream]
name=app
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
(4)确保没有旧版jdk
[root@server ~]# rpm -qa | grep java
[root@server ~]# 
(5)下载jdk
[root@app ~]# yum -y install java-11-openjdk
[root@app ~]# java -version
openjdk version "11.0.20.1" 2023-08-24 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.1.1-2) (build 11.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.1.1-2) (build 11.0.20.1+1-LTS, mixed mode, sharing)
(6)下载lrzsz
[root@app ~]# yum -y install lrzsz
(7)下载tomcat9,并解压安装部署
[root@app ~]# rz -E
rz waiting to receive.
[root@app ~]# ls
anaconda-ks.cfg              Documents  Pictures                 Templates
apache-tomcat-9.0.67.tar.gz  Downloads  Public                   Videos
Desktop                      Music      rhel-9.2-x86_64-dvd.iso
[root@app ~]# tar -xzf apache-tomcat-9.0.67.tar.gz -C /usr/local
[root@app ~]# cd /usr/local
[root@app local]# ls
apache-tomcat-9.0.67  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@app local]# ln -s apache-tomcat-9.0.67/ tomcat
[root@app local]# ls
apache-tomcat-9.0.67  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share  tomcat
[root@app local]# cd tomcat/
[root@app tomcat]# bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@app tomcat]# ss -anlt
State    Recv-Q   Send-Q          Local Address:Port       Peer Address:Port   Process   
LISTEN   0        128                 127.0.0.1:6010            0.0.0.0:*                
LISTEN   0        4096                  0.0.0.0:111             0.0.0.0:*                
LISTEN   0        128                   0.0.0.0:22              0.0.0.0:*                
LISTEN   0        128                 127.0.0.1:631             0.0.0.0:*                
LISTEN   0        1          [::ffff:127.0.0.1]:8005                  *:*                
LISTEN   0        128                     [::1]:631                [::]:*                
LISTEN   0        100                         *:8080                  *:*                
LISTEN   0        4096                     [::]:111                [::]:*                
LISTEN   0        511                         *:80                    *:*                
LISTEN   0        128                     [::1]:6010               [::]:*                
LISTEN   0        128                      [::]:22                 [::]:*   

在这里插入图片描述

二、server主机部署Jenkins

1、下载jenkins到/usr/local/tomcat/webapps/目录下
[root@server tomcat]# cd webapps/
[root@server webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@server webapps]# rz -E
rz waiting to receive.
[root@server webapps]# ls
docs  examples  host-manager  jenkins.war  manager  ROOT
[root@server webapps]# ls
docs  examples  host-manager  jenkins  jenkins.war  manager  ROOT
[root@server webapps]# cd ..
[root@server tomcat]# bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@server tomcat]# bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
浏览器访问:192.168.100.10:8080/jenkins,在服务端查看密码
2、安装推荐的插件(安装过程较长)

在这里插入图片描述

在这里插入图片描述

3、创建任务

在这里插入图片描述

在这里插入图片描述

4、发布流水线的方法有两种,一种是脚本的方式,一种是使用文本参数的方式
首先都需要在jinkins所在服务器,也就是node1中安装git和maven
[root@server ~]# yum -y install git
[root@server ~]# yum search maven
Updating Subscription Management repositories.
Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.Last metadata expiration check: 0:34:49 ago on Tue 21 Oct 2025 06:43:16 PM CST.
============================== Name Exactly Matched: maven ==============================
maven.noarch : Java project management and project comprehension tool
============================= Name & Summary Matched: maven =============================
maven-lib.noarch : Core part of Maven
maven-openjdk11.noarch : OpenJDK 11 binding for Maven
maven-openjdk17.noarch : OpenJDK 17 binding for Maven
maven-openjdk21.noarch : OpenJDK 21 binding for Maven
maven-openjdk8.noarch : OpenJDK 8 binding for Maven
maven-resolver.noarch : Apache Maven Artifact Resolver library
maven-shared-utils.noarch : Maven shared utility classes
================================== Name Matched: maven ==================================
maven-wagon.noarch : Tools to manage artifacts and deployment
[root@server ~]# yum -y install maven-openjdk11.noarch
(1)使用脚本
pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
}
}

在这里插入图片描述

在这里插入图片描述

点击立即构建

在这里插入图片描述

看视图——将源换为国内的镜像源——下载视图插件
https://mirrors.huaweicloud.com/jenkins/updates/update-center.json

在这里插入图片描述

在这里插入图片描述

点击完成后重启——登录

在这里插入图片描述

添加第二部分脚本执行
pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
stage(‘package’) { 
steps { 
sh """ 
mvn clean
mvn package
"""
}
}
}
}

再次进行构建–此时构建时间非常长

第二次构建就是为了安装软件包,生成站点,
站点在/root/.jenkins/workspace/test/target/目录下,通过日志文件可以看到该目录下就有个压缩文件为java-tomcat-maven-example

在这里插入图片描述

第三次构建的时候,就是需要把这个文件使用scp的方式发送给node2的tomcat中
先做好免密钥操作
[root@server ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:5RBtUWany1RFUxW8dqJfm8BQsOePCjj2D3hKBSLZ7pE root@server.example.com
The key's randomart image is:
+---[RSA 3072]----+
|        ...+= +=O|
|    o    .oo.= ..|
|   o o .....+.  .|
|    o o .+ +o..o.|
|     E  S.. =o...|
|    . . +   .oo .|
|     . * +   o.oo|
|      o = o . .o |
|       . ..o     |
+----[SHA256]-----+
[root@server ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.110
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.100.110 (192.168.100.110)' can't be established.
ED25519 key fingerprint is SHA256:dzFDYh3CzEyOrNsFO9Pw3TMH3PSgvTJf7/EdklBHmPA.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.100.110's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.100.110'"
and check to make sure that only the key(s) you wanted were added.
脚本
pipeline {agent anystages {stage('pull code') {steps {git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'}}stage('package') {steps {sh """mvn cleanmvn package"""}}stage('deploy') {steps {sh """scp target/java-tomcat-maven-example.war root@192.168.100.110:/usr/local/tomcat/webapps/ssh root@192.168.100.110 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'"""}}}
}

在这里插入图片描述

查看node2主机
[root@app ~]# cd /usr/local/tomcat/webapps/
[root@app webapps]# ls
docs      host-manager               java-tomcat-maven-example.war  ROOT
examples  java-tomcat-maven-example  manager
浏览器访问:192.168.100.110:8080/java-tomcat-maven-example
能够成功访问该页面,说明我们此次jenkins流水线项目部署成功

在这里插入图片描述

(2)通过文本参数来实现流水线项目发布
为了实验效果,我们首先把node2中刚刚接收到的站点给删除
[root@app webapps]# ls
docs      host-manager               java-tomcat-maven-example.war  ROOT
examples  java-tomcat-maven-example  manager
[root@app webapps]# rm -rf java-tomcat-maven-example.war
[root@app webapps]# rm -rf java-tomcat-maven-example
[root@app webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@app webapps]# cd ..
[root@app tomcat]# bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@app tomcat]# bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
新建流水线项目test2

在这里插入图片描述

参数化构建(都是字符参数也可以构建成功)
1、添加字符参数git下载信息 hhttps://github.com/devopsbyhari/JenkinsTomcatExample.git

在这里插入图片描述

2、添加字符参数,打包

在这里插入图片描述

3、添加字符参数 定义tomcat路径

在这里插入图片描述

4、添加文本参数 定义客户端ip

在这里插入图片描述

5、编写流水线脚本
pipeline {agent anystages {stage('pull code') {steps {git "${git_url}"}}stage('package') {steps {sh """mvn cleanmvn package"""}}stage('deploy') {steps {sh """scp target/${maven_package}.war root@${client_ip}:${tomcat_path}/webapps/ssh root@${client_ip} '${tomcat_path}/bin/catalina.sh stop && ${tomcat_path}/bin/catalina.sh start'"""}}}
}

在这里插入图片描述

点击构建

在这里插入图片描述

测试
node2中
[root@app tomcat]# cd webapps/
[root@app webapps]# ls
docs      host-manager               java-tomcat-maven-example.war  ROOT
examples  java-tomcat-maven-example  manager

在这里插入图片描述

http://www.dtcms.com/a/511370.html

相关文章:

  • 网站优化需要做什么烟台网站建设比较大的
  • CAN入侵检测系统IDS不行,用扩充白名单机制保证汽车功能安全需求
  • 微软Teams的Media bypass的介绍
  • 分布式一致性
  • 使用微软Agent Framework .NET构建智能代理应用
  • MOSHELL (10) : COLI 交互
  • 九江网站开发wordpress适合seo
  • 【JavaScript】some方法的详解与实战
  • 买机票便宜网站建设分站式二手车网站源码
  • windows配置hadoop环境
  • Java中的单例模式
  • K8s部署,新版本
  • LXC容器操作实战【Linux】
  • CAN总线: 仲裁
  • ⸢ 捌-Ⅱ⸥⤳ 可信纵深防御应用实践:软件供应链、数据滥用、安全加固
  • Linux Bash(二)
  • 上海建设单位工程备案网站宜宾网站建设网站
  • AI: 生成Android自我学习路线规划与实战
  • 项目实践2—全球证件智能识别系统(Qt客户端开发+FastAPI后端人工智能服务开发)
  • 百度面试题解析:新生代分区、垃圾回收算法、虚拟机栈和类加载(四)
  • AIDC爆火,储能企业跨界抢滩AI能源“新战场”
  • h5游戏免费下载:飞越天空之城
  • 温州市建设厅网站首页什么网站可以自己做房子设计图
  • 基于多路复用技术的高并发服务器组件
  • Linux 进程控制块(PCB)解析:深入理解进程管理机制
  • 子查询总拖慢查询?把它变成连接就能解决?
  • YOLOv3 核心笔记
  • 谷歌发布首个隐私安全模型VaultGemma
  • 什么情况下可能会导致 Redis 阻塞?
  • 保姆级教程vscode创建uniapp vue3+ts+pinia项目并实现自动导入、打包功能