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

Jenkins+Docker 实现一键自动化部署项目

1、docker安装Jenkins

1.1、在根目录下创建文件夹

cd /
mkdir -p /mydata/jenkins/jenkins_home 
mkdir -p /mydata/jenkins/localtime

1.2、下载jenkins镜像并启动运行

docker pull jenkins/jenkins:2.414.2
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /mydata/jenkins/jenkins_home:/var/jenkins_home -v /mydata/jenkins/localtime  --name jenkins jenkins/jenkins:2.414.2

1.3、初始化Jenkins

​ 获取密码

docker logs jenkins

页面访问:http://{部署Jenkins所在服务IP}:8080

image-20240903213135775

1.4、Jenkins安装步骤

选择推荐的插件

image-20240903213237845

image-20240903213458577

密码:123456

image-20240903213610596

2、安装maven插件

2.1、通过手动上传安装 apache-maven-3.9.9-bin.tar.gz

image-20240903214939705

解压并复制到指定目录

tar -zxvf apache-maven-3.9.9-bin.tar.gz
cp -r /mydata/apache-maven-3.9.9 /mydata/jenkins/jenkins_home

image-20240903214903364

2.2 配置maven仓库

   <localRepository>/mydata/jenkins/jenkins_home/apache-maven-3.9.9/m2</localRepository><!-- 阿里云仓库 	--><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror><profile>     <id>JDK-1.8</id>       <activation>       <activeByDefault>true</activeByDefault>       <jdk>1.8</jdk>       </activation>       <properties>       <maven.compiler.source>1.8</maven.compiler.source>       <maven.compiler.target>1.8</maven.compiler.target>       <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>       </properties>       </profile>

3、Jenkins全局配置

路径:Dashboard > Manage Jenkins > Tools

3.1、下载插件 Publish over SSH

image-20240903231026427

3.2、配置地址

image-20240903234304013

1.SSH Server Name 填你虚拟机IP或用户名
2.Hostname 填你的虚拟机IP
3.Username 默认root
4.Remote Directory 填 /
5.保存

4、创建任务测试

image-20240904001331277

注意:这个任务名称对应的就是代码所在的文件夹

4.1、配置仓库地址

image-20240903234638812

4.2、构建启动

image-20240903234733842

目标:clean install

image-20240903235053848

pom.xml是项目代码所在位置

image-20240903234755129

image-20240903234827007

cp /mydata/jenkins/jenkins_home/workspace/fufeng/target/deploy-0.0.1-SNAPSHOT.jar /mydata/jenkins/jenkins_home/jar/
#!/bin/bash
APP_NAME=deploy-0.0.1-SNAPSHOT.jar
LOG_NAME=deploy-0.0.1-SNAPSHOT.logpid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`function is_exist(){
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
String="notExist"
echo $String
else
String="exist"
echo $String
fi
}str=$(is_exist)
if [ ${str} = "exist" ]; then
echo " 检测到已经启动的程序,pid 是 ${pid} "
kill -9 $pid
else
echo " 程序没有启动了 "
echo "${APP_NAME} is not running"
fistr=$(is_exist)
if [ ${str} = "exist" ]; then
echo "${APP_NAME} 已经启动了. pid=${pid} ."
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /mydata/jenkins/jenkins_home/workspace/fufeng/target/$APP_NAME   >$LOG_NAME 2>&1 &
echo "程序已重新启动..."
fi

启动脚本里面的路径手动创建

应用保存!

image-20240904002159124

4.3、验证是否启动成功

查看Java进程:

image-20240904002106669

页面测试:

image-20240904002306173

应用保存!

[外链图片转存中…(img-IqANpifs-1748446972562)]

4.3、验证是否启动成功

查看Java进程:

[外链图片转存中…(img-6xZOUWzP-1748446972563)]

页面测试:

[外链图片转存中…(img-Yshx4e5n-1748446972563)]

http://www.xdnf.cn/news/9385.html

相关文章:

  • 学习STC51单片机18(芯片为STC89C52RCRC)
  • 干货|VR全景是什么?
  • 并发解析hea,转为pdf格式
  • Unity数字人开发笔记——讯飞超拟人语音
  • uniapp|实现多端图片上传、拍照上传自定义插入水印内容及拖拽自定义水印位置,实现水印相机、图片下载保存等功能
  • 实测!横屏影视素材转竖屏 无损转换 +参数可调 抖音 快手竖屏视频一键适配
  • C++ 复制构造函数:创建对象的 “拷贝大师”
  • Ajax(Asynchronous JavaScript and XML)
  • 无人机分布式协同算法解析!
  • 采用Bright Data+n8n+AI打造自动化新闻助手:每天5分钟实现内容日更
  • promptfoo:让语言模型评测不再“靠感觉”——一站式 LLM 自动化测评神器深度解读
  • C#学习26天:内存优化的几种方法
  • 【开源解析】基于PyQt5+Folium的谷歌地图应用开发:从入门到实战
  • 在 Ubuntu 22.04 LTS 上离线安装 Docker
  • 002 flutter基础 初始文件讲解(1)
  • 解码 Skate:打造链间可组合应用栈,构建跨越虚拟机的无状态未来
  • 使用 Selenium 进行自动化测试:入门指南
  • sl4j+log4j日志框架
  • 苍穹外卖 09 WebSocket来单提醒客户催单营业额统计
  • 【C++】string类的使用(万字详解)
  • ZYNQ-PS与PL端BRAM数据交互
  • Tesseract OCR 安装与中文+英文识别实现
  • RK3568DAYU开发板-平台驱动开发:I2C驱动(原理、源码、案例分析)
  • 中山大学无人机具身导航新突破!FlightGPT:迈向通用性和可解释性的无人机视觉语言导航
  • 概念流水账:PHY、PCS、PRBS
  • Vue 项目中 Sass 与 Less 的对比
  • 社区造数服务接入MCP|得物技术
  • 中间件redis 功能篇 过期淘汰策略和内存淘汰策略 力扣例题实现LRU
  • UE5 编辑器工具
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 按钮大小设置的小技巧