Jenkins一建打包部署

Jenkins 安装及配置

1、docker 环境下的安装

① 下载Jenkins 的Docker 镜像

docker pull jenkins/jenkins:lts

② 在Docker 容器中运行Jenkins

docker run -p 8080:8080 -p 50000:5000 --name jenkins \ 
	-u root \
	-v /mydata/jenkins_home:/var/jenkins_home \
	-d jenkins/jenkins:lts

2、Jenkins的配置

① 运行成功后访问改地址,第一次登录需要输入管理员密码:http://47.116.131.193:8080/
在这里插入图片描述
② 使用管理员密码登录,可以使用一下命令从容器中日志中获得管理员密码

docker logs jenkins

在这里插入图片描述
③ 安装完成后,创建管理员账号
在这里插入图片描述
④ 进行实例配置,配置Jenkins的URL:
在这里插入图片描述
⑤点击系统管理->插件管理,进行一些自定义的插件安装:
在这里插入图片描述
⑥ 确保以下插件被正确安装:
根据角色管理权限的插件:Role-based Authorization Strategy
远程使用ssh的插件:SSH plugin
⑦ 通过系统管理->全局工具配置来进行全局工具的配置,比如maven的配置:
在这里插入图片描述
⑧ 新增maven的安装配置
在这里插入图片描述
⑨ 在系统管理->系统配置中添加全局ssh的配置,这样Jenkins使用ssh就可以执行远程的linux脚本了:
在这里插入图片描述

角色配置

不同操作人员,应该打包权限是不同的。

① 在系统管理->全局安全配置中启用基于角色的权限管理:
在这里插入图片描述
② 进入系统管理->Manage and Assign Roles界面:
在这里插入图片描述
③ 添加角色与权限的关系:
在这里插入图片描述

打包部署

maven 打包部署

① 代码上次到仓库。可以是gitlab,GitHub,等等
② 有一点需要注意,要将pom.xml中的dockerHost地址改成你自己的Docker镜像仓库地址:
在这里插入图片描述
③ 将jenkins.sh 脚本文件上传到/mydata/sh目录下

#!/usr/bin/env bash
app_name='mall-tiny-jenkins'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -p 8088:8088 --name ${app_name} \
--link mysql:db \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d mall-tiny/${app_name}:1.0-SNAPSHOT
echo '----start container----'

④ 给脚本添加可执行权限

chmod +x ./jenkins.sh

⑤ windows下的.sh脚本上传到linux上使用,需要修改文件格式,否则会因为有特殊格式存在而无法执行:

#使用vim编辑器来修改
vi mall-tiny-jenkins.sh
# 查看文件格式,windows上传上来的默认为dos
:set ff 
#修改文件格式为unix
:set ff=unix 
#保存并退出
:wq

DockerFile 部署

① pom文件修改
在这里插入图片描述
② 然后使用Maven的package命令直接将应用打成Jar包;
在这里插入图片描述
③此时在target目录下就会生成一个Jar包,我们打包Docker镜像的时候会用到它。
④ DockerFile

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD mall-tiny-jenkins-1.0-SNAPSHOT.jar /mall-tiny-jenkins-1.0-SNAPSHOT.jar
# 声明服务运行在8088端口
EXPOSE 8088
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"]
# 指定维护者的名字
MAINTAINER Sam

④ 自动化脚本

可以作为通用脚本来使用的模板脚本,只需改变其中的一些参数即可,具体执行流程为:停止旧服务->删除旧容器->删除旧镜像->打包新镜像->运行新镜像。
#!/usr/bin/env bash
# 定义应用组名
group_name='mall-demo'
# 定义应用名称
app_name='mall-demo-jenkins'
# 定义应用版本
app_version='1.0-SNAPSHOT'
# 定义应用环境
profile_active='qa'
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包编译docker镜像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 8088:8088 --name ${app_name} \
--link mysql:db \
-e 'spring.profiles.active'=${profile_active} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'

下面讲下自动化脚本里面值得注意的地方:

group_name、app_name、app_version可以用来定义打包镜像的属性;
profile_active可以让你的应用使用不同环境下的配置,比如使用qa可以启用	测试环境的配置,使用prod可以启用生产环境配置,真正的一包多用;
docker rmi这步一定要有,如果不删除旧镜像,当新镜像打包的时候会产生	none镜像;
docker run命令中的-e TZ="Asia/Shanghai"时区一定要设置,否则容器时间	会和宿主机会相差8个小时。

⑥ 直接上传我们的应用Jar包、DockerFile文件和自动化部署脚本到指定目录下;
在这里插入图片描述
⑦ 将自动化脚本修改为可执行;

chmod +x run.sh

⑧ 使用./run.sh命令直接运行脚本即可。
在这里插入图片描述

在Jenkins中创建执行任务

① 创建一个任务
在这里插入图片描述
② 设置任务名称后选择构建一个自由风格的软件项目:
在这里插入图片描述
③ 在源码管理中添加我们的git仓库地址
在这里插入图片描述
在这里插入图片描述
④ 之后我们需要添加一个构建,选择调用顶层maven目标,该构建主要用于把我们的源码打包成Docker镜像并上传到我们的Docker镜像仓库去:
在这里插入图片描述
⑤ 选择我们的maven版本,然后设置maven命令和指定pom文件位置:
在这里插入图片描述
⑥ 之后添加一个执行远程shell脚本的构建,用于在我们的镜像打包完成后执行启动Docker容器的.sh脚本:
在这里插入图片描述
⑦ 需要设置执行的shell命令如下:/mydata/sh/jenkins.sh
在这里插入图片描述
⑧ 之后点击保存操作,我们的任务就创建完成了,在任务列表中我们可以点击运行来执行该任务;
在这里插入图片描述

Publish Over SSH

这里推荐安装Jenkins插件,他的主要作用可以通过SSH在不同服务器之间传输文件和执行命令。比如说,我们把Jenkins装在了开发服务器上,我们可以使用Jenkins再开发服务器上从Git仓库获取代码,然后打成Jar包。打包完成后我们可以通过这个插件将jar包传输到正式服务器上去,然后执行正式服务器上的自动化脚本,从而实现正式服务器上的自动化部署。

① 首先我们可以在 系统管理–插件管理 中找到该插件,然后进行安装。
在这里插入图片描述
② 然后在 系统管理–>插件管理 中添加相应的SSH 配置。
在这里插入图片描述
③ 配置完成后创建一个应用的构建任务,源码管理和构建中的maven 打包配置和之前上面一样,只有最后一步不同,添加构建步骤为 通过SSH发送文件并执行命令;
在这里插入图片描述
④ 配置好我们的SSH Publisher,主要是源文件路径和目标文件路径,以及需要执行的脚本;
在这里插入图片描述
⑤ 之后执行构建任务即可实现自动化部署了,此方法在两台不同服务器之间同样适用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值