CI/CD——使用Jenkins自动化构建java项目之使用传统方式部署java web项目jpress
2026/5/6 11:20:50 网站建设 项目流程

CI/CD——使用Jenkins实现自动化部署与持续集成之jenkins插件与凭据配置https://blog.csdn.net/xiaochenXIHUA/article/details/160766389

一、创建使用传统方式部署java web项目jpress的任务

1.0、创建一个新的Item

登录到jenkins的web管理后台,点击左上角的【新建Item】即可进入任务配置界面,在该界面根据提示输入【任务名称(如:classical-javaweb-jpress-deploy)】-->【构建一个自由风格的软件项目(Freestyle project)】-->【确定】按钮即可创建一个新任务,如下图所示:

1.1、通用设置

General需配置的内容
描述:填写该任务的简要说明,方便了解这个任务是做什么的(如:使用传统方式部署java web项目jpress)
高级:勾选【使用自定义的工作空间】且在目录下填写路径(如:/data/jenkins/jobs/jpress)
显示名称:根据实际的任务名称填写,方便识别即可(如:classical-javaweb-jpress-deploy)

1.2、源码管理

源码管理下选择了【Git】并在“Repository-->Repository URL”下输入了项目的git地址(如:ssh://git@gitlab.ck.com:22222/root/jpress.git)时报错“Failed to connect to repository : Command "/usr/bin/git ls-remote -h ssh://git@gitlab.ck.com:22222/root/jpress.git HEAD" returned status code 128:
stdout:
stderr: No ECDSA host key is known for [gitlab.ck.com]:22222 and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
”这是典型的SSH 主机密钥验证失败问题:

  1. Jenkins 所在机器第一次通过 SSH 访问gitlab.ck.com:22222
  2. SSH 默认开启了主机密钥严格校验,发现本地没有记录该主机的指纹,拒绝连接;
  3. 你的凭证虽然是正确的 SSH 密钥,但主机信任问题没解决,所以报错

#解决“源码管理”添加Git项目的源码SSH地址后报错问题 #1-让当前jenkins所在服务器的用户(root)信任GitLab的主机上的公钥 #如下命令的作用是:让本机信任服务器(解决弹窗)(告诉本机 SSH:gitlab.ck.com 这台服务器是安全的、可信的,我不用再弹窗确认了) ssh-keyscan -p 22222 gitlab.ck.com >> /root/.ssh/known_hosts #2-在jenkins所在服务器上验证测试与gitlab.ck.com的SSH连接是否通畅(若成功输出“Welcome to GitLab, @你的用户名!”内容则表示公私钥配对成功,验证通过了,可以正常连接gitlab操作项目了);若失败则【权限被拒绝:公钥没放到 GitLab 上 / 私钥不对;连接超时:端口 / 网络不通;主机密钥错误:之前的 known_hosts 没配置好】 #如下命令作用是:测试真正的权限连接(验证公私钥) ssh -T git@gitlab.ck.com -p 22222

SSH登录有两个独立的安全检查说明
主机身份验证(known_hosts 做的)
  • 检查:你连的服务器是不是真的服务器
  • 防止:中间人攻击
  • 你的命令:只是把服务器加入白名单,跳过弹窗
用户身份验证(公私钥做的)
  • 检查:你有没有权限登录这台服务器
  • 防止:陌生人登录
  • 必须:本地有私钥 → 服务器上配了对应的公钥

1.3、构建触发器

根据自己任务的实际情况按需配置,我这里用不到,先不配置,如下图所示:

1.4、构建环境

1.4.1、先配置SSH传输内容的服务器

构建环境涉及到文件的传输,因此需要先配置SSH传输到目标服务器的内容。

#在jenkins所在的服务器上生成密钥对 #1-生成默认密钥对命令;密钥对的路径是【/root/.ssh/】,【id_ed25519】是私钥文件;【id_ed25519.pub】是公钥文件 ssh-keygen -t ed25519 #2-将公钥添加到需ssh免密登录的远程服务器上 #将公钥添加到需ssh免密登录的远程服务器上 ssh-copy-id -i /root/.ssh/id_rsa.pub user@remote-hostIP #若远程Linux服务器的SSH端口不是默认的22则需要指定端口号【-p 端口】 ssh-copy-id -i /root/.ssh/id_rsa.pub -p 端口号 user@remote-hostIP #如:我这里生成密钥对的服务器IP是【192.168.1.11】,还需要ssh免密登录的服务器IP有【192.168.1.30】(给root与ck用户都配置了公钥实现免密登录) ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 root@192.168.1.30 ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 ck@192.168.1.30

在jenkins所在服务器生成密钥对,且与需要部署应用的服务器上配置公钥后,就可以在jenkins的【Manage Jenkins】-->【系统配置】界面最底部的【Publish over SSH】模块下配置【先配置jenkins所在服务器上的私钥路径“Path to key”的值“/root/.ssh/id_ed25519”】-->【然后在SSH Servers】下面添加需要部署应用的服务器信息【Name表示创建的任务下构建环境时显示的名称(主要是为了方便识别,可随意取名)-->Hostname表示主机IP-->Username表示连接主机的用户名称(如:root)-->Remote Directory表示在需要部署服务器部署的路径(如:/usr/local)-->若需要部署应用服务器的SSH端口不是默认的22则需要在“高级”下配置对应的端口信息】如下图所示:

1.4.2、构建环境配置

#构建环境配置 #需要在jenkins所在服务器上创建“指定的自定义工作空间” mkdir -p /data/jenkins/jobs/jpress cd /data/jenkins/jobs/jpress

在jenkins的“构建环境(Enviroment)”下【勾选“Delete workspace before build starts”(勾选则表示每次都删除工作空间的下的内容,重新拉取项目源码;不勾选则表示只是更新变动内容)】-->【勾选“Send files or execute commands over SSH before the build starts”(表示发送文件或执行命令前的操作),在该项内容下配置需要部署应用的SSH内容、传输的原文件“source files”(如:start-jpress.sh);还有执行的命令“Exec command”(如:rm -rf /usr/local/jpress && mkdir /usr/local/jpress && mv /usr/local/start-jpress.sh /usr/local/jpress && chmod 755 /usr/local/jpress/start-jpress.sh)】;最后再勾选【Add timestamps to the Console Output】如下图所示:

1.5、构建步骤

在jenkins的构建步骤(Build Steps)中选择【调用顶级Maven目标(Invoke top-level Maven targets)】接着选择【Maven版本】-->【目标(输入“clean install -D maven.test.skip=true”)】如下图所示:

1.6、构建后操作

在jenkins的“构建后操作”下选择【通过SSH构建产品(Send build artifacts over SSH)】接着在下面的【SSH Publishers]-->【SSH Server】(配置部署应用服务器的内容【Name是部署应用的SSH配置内容】-->【传输设置(Transfer set)配置需要传输的原文件(Source files)(如:starter/target/*.zip)-->移除前缀(Remove prefix)(如:/starter/target/)-->远程目录(Remote diretory)(如:jpress/)-->执行命令(Exec command)(如:/usr/local/jpress/start-jpress.sh)】)最后点击【保存】按钮,如下图所示:

到这里,恭喜你表示一个“使用传统方式部署java web项目jpress”的任务配置成功了。

二、执行jenkins任务

2.1、在部署jpress的服务器上配置jdk1.8环境

#需要在部署jpress的服务器上安装jdk1.8环境 yum install -y java-1.8.0-openjdk-devel #查看java版本 java -version

2.2、立即执行jenkins任务

在jenkins中创建好的任务“classical-javaweb-jpress-deploy”界面左侧选择【立即构建(Build Now)】表示立即执行该任务,然后在左侧底部会有一个【Builds】的任务内容,点击任务右侧的“向下箭头图标”选择“控制台输出”即可看到jenkins的任务执行情况,如下图所示:

2.3、直接在浏览器中检查jpress应用是否启动

在浏览器中输入被部署jpress应用的服务器IP:8000即可看到安装界面,如下图所示:

到这里,恭喜你,在jenkins中完成了一整套的“使用传统方式部署java web项目jpress”的自动化任务。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询