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

1、docker安装Jenkins

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

shell 复制代码
cd /
mkdir -p /mydata/jenkins/jenkins_home 
mkdir -p /mydata/jenkins/localtime

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

shell 复制代码
docker pull jenkins/jenkins:2.414.2
shell 复制代码
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

​ 获取密码

shell 复制代码
docker logs jenkins

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

1.4、Jenkins安装步骤

选择推荐的插件

密码:123456

2、安装maven插件

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

解压并复制到指定目录

复制代码
tar -zxvf apache-maven-3.9.9-bin.tar.gz

cp -r /mydata/apache-maven-3.9.9 /mydata/jenkins/jenkins_home

2.2 配置maven仓库

xml 复制代码
   <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

3.2、配置地址

1.SSH Server Name 填你虚拟机IP或用户名

2.Hostname 填你的虚拟机IP

3.Username 默认root

4.Remote Directory 填 /

5.保存

4、创建任务测试

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

4.1、配置仓库地址

4.2、构建启动

目标:clean install

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

shell 复制代码
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.log

pid=`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"
fi

str=$(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

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

应用保存!

4.3、验证是否启动成功

查看Java进程:

页面测试:

应用保存!

外链图片转存中...(img-IqANpifs-1748446972562)

4.3、验证是否启动成功

查看Java进程:

外链图片转存中...(img-6xZOUWzP-1748446972563)

页面测试:

外链图片转存中...(img-Yshx4e5n-1748446972563)

相关推荐
IT界的老黄牛5 小时前
Jenkins 监控一条龙:接入、看板 9964、11 条告警规则直接抄走
jenkins·grafana·prometheus·监控·ci-cd·告警规则
吴佳浩 Alben6 小时前
Agent 怎么做自动化评测?构建端到端的 Agent Evaluation 体系
人工智能·语言模型·架构·自动化·ai编程
xhaxy6 小时前
docker
docker·容器·eureka
pt10437 小时前
网络自动化Python课程:Cisco PyATS网络自动化测试框架
运维·自动化
小袁拒绝摆烂8 小时前
Jenkins部署经验
运维·jenkins
一技安身9 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
天空属于哈夫克312 小时前
私域运营:如何用自动化做好客户跟进?
机器人·自动化·企业微信
鸿观工坊13 小时前
Docker 多阶段构建实践指南
docker
Profile排查笔记13 小时前
指纹浏览器推荐:用一套验收清单筛选 Profile、代理与自动化能力
前端·人工智能·后端·自动化
鹿鹿学长13 小时前
发题前三天,组委会在过三道关:赛题七渠道首发、知网统一收卷、AI 详情 PDF 首进支撑材料
python·自动化