注意:本文是基于上一篇文章《Docker基础入门》,https://blog.csdn.net/MiemieWan/article/details/107047467。
第十一章中的脚本文件start.sh修改如下,且移动到honor文件夹下,详情查看:https://github.com/141110126/honor
# linux脚本文件
# 拉取代码
echo '开始执行start.sh'
cd admin
npm i
# 打包
npm run build
# 删除容器
docker rm -f honor-admin
# 打印当前文件的绝对路径
echo $(cd $(dirname $0); pwd)
# 启动容器
docker run -d --restart=on-failure:5 -p 8082:80 -v $(cd $(dirname $0); pwd)/dist:/usr/share/nginx/html --name honor-admin nginx
本文目标:vue项目上传github后,服务器上自动拉取代码(webhook),并自动编译部署代码。
工具: Jenkins。jenkins是当前比较流行的一款持续集成&持续部署(CI & CD)的工具,可以实现代码上传仓库(代码更新)后自动部署到需要部署的位置(服务器等)。
一、安装Jenkins
1.安装Java环境
Jenkins是使用Java编写的持续集成的工具,所以需要先安装Java环境.
(1)查看可安装的java版本:
yum -y list java*
(2)选择一个版本安装
yum install -y java-1.8.0-openjdk-devel.x86_64
(3)检查是否安装成功
java -version
2.jenkins大致有三种安装方式:
- 使用war包进行安装
- linux使用rpm方式安装
- docker方式安装jenkins
选择使用rpm安装的原因有:1.当前使用的正是linux系统 2.使用docker安装后,在容器内访问宿主机的docker命令太困难。
yum的repos中默认是没有Jenkins的,需要先将Jenkins存储库添加到yum repos。
// 将Jenkins存储库添加到yum repos
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
// 导入公钥
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
// 安装jenkins
yum install jenkins
注意:如果出现 Public key for jenkins-2.244-1.1.noarch.rpm is not installed,则使用一下方法跳过公钥检查
yum install jenkins --nogpgcheck
3.启动Jenkins
Jenkins:启动/停止/重启(start/stop/restart)
service jenkins start
4.检测是否成功
打开浏览器输入 ip:8080
几秒后自动跳转到以下页面:
5.获取密码:
服务器中输入 cat 和 页面中的红色代码
6.复制并输入后点击继续,安装需要的插件:
安装完成后进入欢迎页:
7.创建任务:
8.填入git信息:
添加git账号:
选取设置的git账号:
9.github中添加webhook:
本地push代码到github上后,触发Webhook,jenkins自动执行构建。
jenkins安装Generic Webhook Trigger 插件:
找到管理创建选项:
搜索Generic Webhook Trigger Plugin插件 并选中,点击左下角按钮进行安装:
任务配置中选中Grneric Webhook Trigger,并填写token:
github添加触发器
在jenkins中我们开启了github trigger,但是呢,github方还不知道在我们push完代码之后应该通知jenkins,以及通知哪个jenkins.
去github中,找到当前项目,点击setting,找到webhook选项,添加上ip + Jenkins中默认的路由 + token ,例如http://129.204.155.35:8080/generic-webhook-trigger/invoke?token=123456,保存即可。
10.配置触发器:
11.执行shell
点击左下角保存按钮保存任务配置。
12.将jenkins加入docker组
start.sh中有启动docker的命令,但是用jenkins去执行的话,由于jenkins不在docker的组内,所以执行一些命令的时候没有权限,所以要将jenkins加入docker组
1. 将jenkins加入docker组
gpasswd -a jenkins docker
2. 重启jenkins服务
service jenkins restart
13.执行任务
进入任务中,点击Build Now, 任务开始执行
点击进入Build History中最新的任务,点击Console Output查看脚本执行结果
14.检测是否成功