目录
使用工具:
一台服务器或者本地虚拟机:操作系统linux
Docker:用于配置jdk、jenkins、nginx等软件
Jenkins,通过配置拉取github上的项目,自动打包项目,通过docker安装,或者其他方式
Nginx,部署vue项目 ,通过docker安装,或者其他方式
Java环境,运行jar包,通过docker安装,或者其他方式
Github,代码托管平台,存取项目代码
Idea,java项目开发,然后将代码上传到github
Webstorm,vue项目开发,然后将代码上传到github
IIS7或者其他连接服务器的软件:服务器操作
自动部署流程:idea上传代码到github >> github收到push命令 ,向Jenkins发送请求>>Jenkins收到请求后自动打包项目,连接服务器执行shell命令:重启docker容器>>docker重启容器 ,重启会自动更新容器中映射的jar包/dist目录
至此完成了代码更新并发布的所有操作,也可以选择上传代码后手动操作jenkins打包发布,即不配置(github收到push命令 ,向Jenkins发送请求)这一步
环境配置:
docker安装教程请参考以下链接:
https://www.runoob.com/docker/centos-docker-install.html
https://yeasy.gitbook.io/docker_practice/install/centos
https://www.cnblogs.com/yang37/p/14464674.html
使用docker安装jenkins:
参考教程:
https://www.cnblogs.com/ming-blogs/p/10903408.html
安装docker之后 使用docker命令拉取镜像 我拉的blueocean版
docker pull jenkinsci/blueocean
安装完成之后查看所有镜像,看是不是安装成功了
docker images

创建一个文件夹然后修改目录权限,后面用于映射jenkins容器中的目录 随便你创建在哪 自己记得位置就行
#创建
mkdir /usr/jenkins
#修改权限
chown -R 1000:1000 /usr/jenkins
#进入目录
cd usr
#查看所有文件
ls

构建并运行容器
docker run -it -d -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/jenkins:/var/jenkins_home jenkinsci/blueocean .
语句最后有一个 《 . 》请注意
端口映射 -p 9090:8080 服务器端口:容器端口 外部访问->服务器9090->容器8080
容器名称 --name jenkins
目录映射 -v /usr/jenkins:/var/jenkins_home 本机目录:容器目录,即在本地中可以看到并操作容器目录
指定镜像 jenkinsci/blueocean
打印出一串id说明容器就构建完成了,使用docker命令查看是否正常运行
#查看当前运行的容器,可以看到刚才构建并运行的容器,如果没有在运行,那么说明构建的容器有问题
docker ps
#查看所有容器
docker ps-a
#把失败的容器删除掉,然后重新构建。因为失败的容器会占用name和ip端口,会导致你下一次直接构建失败
docker rm 容器id

记得打开网关,不然容器运行了也访问不到
jenkins 访问地址 ip地址:端口
第一次安装会让你输入初始密码
我已经不是第一次了,所以只提供查看密码的命令
在创建容器的时候不是映射了文件夹吗,这时候就可以直接看到jenkins容器中的内容
#查看初始密码
cat usr/jenkins/secrets/initialAdminPassword
然后默认安装插件
创建账号
最后进入到这个界面jenkins就安装成功了,我已经创建过项目了
配置jenkins
登录我们的jenkins
进入插件管理
点击可以插件>>搜索“ssh”>>勾选>>点击安装但不重启
ssh插件介绍为:This plugin executes shell commands remotely using SSH protocol.
如果名称不同请选择介绍一样的插件
等待安装完成
安装成功
同样方法安装 Maven Integration plugin
进入全局工具配置
找到jdk,点击新增
再点击一下这个√,不自动安装
需要输入名称和java环境地址,java环境需要我们进容器中获取
先连接服务器查看所有docker容器,拿到容器id
docker ps

进入容器内部,查看java环境安装地址,查询之后复制地址
#进入容器
docker exec 你的容器id -it /bin/bash
#查看java环境安装地址
echo $JAVA_HOME

将拿到的地址粘贴进去
maven直接自动安装
点击保存
接下来进入系统配置
找到SSH,添加凭据
输入你登录服务器的账号密码,id不是重复的就可以,点击添加
输入服务器地址、端口,选择刚才添加的凭据,点击连接测试按钮,提示成功则配置完成,失败的话检查一下服务器地址或者添加凭据的时候账号密码是否正确
下滑找到github,添加服务
添加凭据
类型选择 Secret text
然后打开github,点击头像,进入设置界面
下拉找到开发人员设置
选择token 点击创建新的token
输入token名称,过期时间选择永久,选择权限,然后创建
生成成功,复制这条字符,关闭这个页面后,就再也看不到这个token了,后面还要使用,建议保存一下
返回jenkins 粘贴进去,点击添加
选择刚才创建凭据,点击链接测试,出现3的内容说明成功,点击保存,jenkins配置完成
自动部署配置:
1、创建项目,Idea创建springboot项目

选择依赖,我只是用来测试,一个web就够了
创建控制层,用于访问
配置文件添加访问端口和路径,我习惯把配置文件后缀名改成.yml
启动项目
打开浏览器本地访问,确保代码是正确的
2、使用idea将项目上传github
打开设置
搜索框输入git,1选择git安装地址,2点击测试 ,3显示版本,说明配置成功
搜索框输入github,添加账号
点击后会跳出授权页面
直接点击蓝色按钮,提示授权成功
配置中显示了github账号,点击ok保存设置
上传远程仓库
如果再次出现授权界面,再次授权即可。
输入仓库名称,是否设为私有,不勾选默认公开,点击share
勾选的是你要上传到仓库的代码,点击add
提示创建成功,点击蓝色的仓库名称就能访问仓库地址
仓库页面,至此代码上传到仓库就已经完成
3、Jenkins创建任务,生成jar包
点击新建任务
输入名称,选择自由风格,点击确定
创建完成,点击github项目
打开仓库,复制地址
复制进去
点击源码管理,选择git,继续粘贴
点击添加凭证
github用户名,生成的token 点击添加
选择凭据 源码的配置就完成了
点击构建,增加调用maven目标
选择之前自动安装的版本,输入maven命令
clean
package

最后点击保存,配置完成,就可以尝试构建项目了
回到我们的任务界面,点击立即构建
左下角会出现构建的任务
点击他,可以进入任务详细,点击控制台输出可以查看输出的日志
可以看到我们的项目构建完成了
构建成功时为绿色,说明我们的配置都是正确的
点击工作空间可以看到构建项目生成的文件,你可以理解为他在服务器上生成了jar包,运行这个jar包还需要我们接下来的操作
连接我们的服务器,进入映射jenkins目录的文件夹,在/usr/jenkins/workspace中,任务生成的文件都在这里
对比一下jenkins的工作空间,是完全一致的,说明我们在服务器上,可以直接访问到jenkins生成的jar包
找到我们的jar包位置,用于构建容器
4、docker生成容器运行jar包
连接服务器,进入我们用于映射jenkins容器目录的文件夹
cd /usr/jenkins
创建并编写Dockerfile文件
vim Dockerfile
Dockerfile文件内容
1、jdk版本
2、作者姓名
3、构建容器时将本文件夹中的/workspace/test/target/test-0.0.1-SNAPSHOT.jar 复制到镜像的/data目录下,并命名为test-0.0.1-SNAPSHOT.jar 你也可以改成 usr/test-0.0.1-SNAPSHOT.jar 那它在镜像中的位置就是在usr下,注意:本地路径为相对路径,不能填绝对路径
4、容器暴露的端口,改成你项目的访问端口
5、容器启动时运行的命令 java -jar data/test-0.0.1-SNAPSHOT.jar 如果你在上面更改了jar路径,就把位置改成 usr/test-0.0.1-SNAPSHOT.jar
FROM java:8-jdk
MAINTAINER wdd
ADD /workspace/test/target/test-0.0.1-SNAPSHOT.jar /data/test-0.0.1-SNAPSHOT.jar
EXPOSE 8083
ENTRYPOINT ["java","-jar","data/test-0.0.1-SNAPSHOT.jar"]
我用这个软件直接创建文件然后输入就可以了
不管那种方式创建,反正都进入我们用于映射jenkins容器目录的文件夹,必须和dockerfile同一级
cd /usr/jenkins
然后构建我们的镜像,test是镜像的名称,你可以换成别的,结尾有个《.》 请不要漏掉
docker build -t test .
创建中
镜像构建完成
构建并启动容器
docker run -d --name mytestdemo -it -v /usr/jenkins/workspace/test/target:/data -p 8083:8083 test .
打开网页访问我们的项目,docker容器生成成功,接下来尝试更新项目
5、手动更新项目
打开我们idea项目,更新代码并上传到github
勾选的为修改的代码,message是更新时填写的消息/备注,然后点击commit按钮提交到本地
提交到本地
再点击上传到github
上传
项目更新成功
进入jenkins构建更新后的项目
构建完成后打开服务器,重启我们的容器
#查看容器id
docker ps
#重启容器
docker restart 容器id

再访问刚才新写的接口,访问成功
至此,我们代码更新时,需要3个步骤才能更新项目:代码上传-》手动操作jenkins构建项目-》手动重启docker容器
继续配置jenkins,让他实现上传代码时,自动构建并发布项目。
下班了,后面的下次继续写
6、配置jenkins
为什么自动更新的步骤放到最后,因为如果你手动更新都运行不成功,那自动更新的时候就不知道哪里错了
打开github项目,点击设置-》webhooks-》add
验证密码
输入你的jenkins地址/github-webhook,点击添加
http://www.mikufun.top:8080/github-webhook
ok
进入jenkins-设置-系统设置,找到github,勾选管理hook,点击保存
进入test任务,点击配置,找到构建触发器,勾选github,这样每次我们在idea push代码时,就会自动构建项目
接着点击构建,增加,选择远程shell
shell脚本要执行的,就是我们的docker重启容器的命令,
连接服务器,复制我们运行jar包的容器id
docker ps

选择之前配置过的ssh凭据,命令中输入docker重启容器的命令,点击保存
docker restart 你运行jar包的容器id

至此,我们配置了github上传代码时-》触发jenkins构建项目-》构建项目时像服务器发送重启docker容器的命令
实现了上传代码立即自动更新运行中的项目
接下来我们再打开idea测试最终结果
7、自动部署测试
打开我们的idea,编写新的接口,然后push代码

打开jenkins可以看到已经开始构建了
构建完成之后直接访问接口,项目已经更新了
结尾
自动更新vue项目也是相同的思路,如果有人不会改就留个言,我继续写个vue版的,也不知道有没有人看。
如果这篇文章对你有帮助,倒是给我点个赞呐!