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

05-DevOps-Jenkins自动拉取构建代码2

通过前面的操作,已经成功完成了源代码的打包工作,具体操作参见下面的文章:

05-DevOps-Jenkins自动拉取构建代码-CSDN博客

验证打包文件

验证打包后的文件是否存在,进入到Jenkins的工作目录中,找到对应的jar包(192.168.1.10)

cd /var/jenkins/workspace/myproject-ci/target

可以看到生存的jar文件。

到这一步,成功把源代码从本地上传到了Gitlab仓库,然后通过Jenkins自动从Gitlab仓库中拉取到代码,再自动打包。这一系列动作都已经完成。

现在只是生成了jar包,但是还没有对外进行暴露,外部无法访问这个程序,下一步就要把这个jar包发布和启动。

在前面已经提到,计划把应用部署到192.168.1.11服务器上(当前服务器为192.168.1.10)。

配置远程服务器地址

在Jenkins中配置远程服务器的地址(把192.168.1.11配置进去)

找到系统配置 

在页面最下面,找到SSH,点击新增

在新增页面中,点击高级选项

  

填写完成,点击测试,出现success,表示可以连通。

点击应用、保存

配置自动发布

当把程序打包后的文件,传输到应用服务器后,让其自行完成完发布的工作。

找到构建后操作(Post-build Actions)

选择通过SSH这个选项(如果没有这个选项,说明前面的SSH的插件没有安装好)

配置相关参数,让Jenkins能够通过SSH登录完成远程服务器的登录,然后进行文件传输和启动工作。

参数说明:

target/*.jar:将当前工作区生成的jar包文件,发送到远程服务器中。

pkill java :杀掉名称为Java的进程
nohup java -jar /usr/local/target/myproject.jar & sleep 1:使用nohup方式启动jar包,1秒后退出。

注意:

需要在高级选项中,找到Exec in  pty 并勾选。

点击应用、保存

再次构建Jenkins,查看控制台输出日志:

看到success,表示构建成功。

验证传输文件

在应用服务器上(192.168.1.11),查看由Jenkins传输过来的jar文件

执行 netstat -tulpn 命令查看当前占用的端口号

可以看到,java程序占用的81端口。

访问应用程序

在浏览器输入192.168.1.11:81,访问springboot的应用。

这里需要配置防火墙,允许81端口被访问。

sudo firewall-cmd --zone=public --add-port=81/tcp --permanent

sudo firewall-cmd --reload

当看到这个内容的时候,Jenkins构建已经成功完成了整个流程,皆大欢喜。

复盘

回顾一下,到这一步为止,已经完成的事情:

1.搭建了GitLab代码仓库,将本地代码提交到仓库。【由GitLab完成】

2.从GitLab代码仓库中克隆代码到Jenkins的工作区【由Jenkins完成】

3.完成代码的编译和测试代码【由Jenkins完成】

4.打包Spring Boot应用【由Jenkins完成】

5.通过SSH传输,将Spring Boot应用最终的jar包,上传到应用服务器(192.168.1.11)【由Jenkins完成】

6.在应用服务器(192.168.1.11)中完成jar包的启动。【由Jenkins完成】

CI/CD流程现在已经正常工作了!!!

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

相关文章:

  • 「数据可视化 D3系列」入门第七章:坐标轴的使用
  • 数据结构——八大排序算法
  • 第十节:性能优化-如何排查组件不必要的重复渲染?
  • PH热榜 | 2025-04-17
  • requestAnimationFrame 深度理解
  • 第二十三天 - 性能优化技巧 - 内存分析与调优 - 练习:资源泄漏检测工具
  • GPT对话UI--通义千问API
  • 【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码
  • 基于labview模拟出租车计价器的设计
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(9)
  • React 设计艺术:如何精确拆分组件接口,实现接口隔离原则
  • 逻辑回归 (Logistic Regression)
  • C++学习:六个月从基础到就业——面向对象编程:重载运算符(下)
  • GPU 招投标全流程分析与总结
  • UE5 相机裁剪面
  • qt与html通信
  • 10.(vue3.x+vite)div实现tooltip功能(css实现)
  • 从0到1:让AI赋能计算机的全流程实践指南
  • 矫平机:工业制造的精密“雕刻师”
  • RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL--RPC源代码分析
  • Kotlin整数相除精度损失roundToInt
  • 用Zotero + Word 宏,一键插入带超链接的参考文献!
  • 铷元素的市场供需情况如何?
  • 破局遗留系统!AI自动化重构:从静态方法到Spring Bean注入实战
  • psplash进度条显示旋转
  • NFC 碰一碰发视频源码搭建全流程详解,支持OEM
  • Spring Boot实战:基于策略模式+代理模式手写幂等性注解组件
  • java 设计模式之策略模式
  • Python爬虫实战:基于 Python Scrapy 框架的百度指数数据爬取研究
  • HTML语义化与无障碍设计