项目打包和自动化部署
项目部署和DevOps
传统的开发模式
在传统的开发模式中,开发的整个过程是按部就班就行:
但是这种模式存在很大的弊端:
- 工作的不协调:开发人员在开发阶段,测试和运维人员其实是处于等待的状态。等到测试阶段,开发人员等待测试反馈 bug,也会处于等待状态
- 线上 bug 的隐患:项目准备交付时,突然出现了 bug,所有人员需要加班、等待问题的处理
DevOps开发模式
DevOps 是Development 和 Operations 两个词的结合,将开发和运维结合起来的模式:
持续集成和持续交付
伴随着 DevOps 一起出现的两个词就是持续集成和持续交付(部署):
- CI 是 Continuous Integration(持续集成)
- CD 是两种翻译:Continuous Delivery(持续交付)或 Continuous Deployment(持续部署)
持续集成 CI:
- 开发人员编写代码上传到代码仓库,让持续集成的服务器立马对代码进行构建,对其进行测试,如果结果有问题直接反馈开发人员
- 不过这个都处理完结果是没有进行部署的,所有还有一个概念是持续交付
持续集成
持续交付和持续部署 CD:
- 把项目交给项目经理,项目经理对其进行部署,可能是自动化部署也可能是手动化部署
- 在持续集成基础上会再进行一些测试,测试没有问题会打一个 release 版本
持续交付
持续部署
自动化部署流程
KubeSphere
搭建服务器环境
Jenkins 自动化部署
安装 Jenkins
安装 Java 环境
Jenkins 本身是依赖 Java 的,所以我们需要先安装 Java 环境:
- 这里我安装了 Java1.8 的环境
bash
$ dnf search java-1.8
$ dnf install java-1.8.0-openjdk.x86_64
安装 Jenkins
因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库:
- wget 是 Linux 中下载文件的一个工具,
-O
表示输出到某个文件夹并且命名为什么文件 - rpm:全称为 The RPM Package Manage,是 Linux 下一个软件包管理器
shell
$ wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
# 导入GPG密钥以确保您的软件合法
$ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# 或者
$ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
编辑一下文件 /etc/yum.repos.d/jenkins.repo
- 可以通过 vim 编辑
bash
$ vim /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1
安装 Jenkins
shell
$ dnf install jenkins # --nogpgcheck(可以不加)
启动 Jenkins 的服务:
shell
$ systemctl start jenkins
$ systemctl status jenkins
$ systemctl enable jenkins
Jenkins 默认使用 8080 端口提供服务,所以需要加入到安全组中:
Jenkins 用户
我们后面会访问 Centos 中的某些文件夹,默认 Jenkins 使用的用户是 jenkins
,可能会没有访问权限,所以我们需要修改一下它的用户:
bash
$ vim /etc/sysconfig/jenkins
JENKINS_USER="root"
# 重启 Jenkins
$ systemctl restart jenkins
Jenkins 配置
获取输入管理员密码:
bash
cat /var/lib/jenkins/secrets/initialAdminPassword
可以安装推荐的插件:
Jenkins 任务
新建任务:
任务名称输入
配置项目和保留策略:
源码管理:
bash
$ dnf install git
添加认证可以先试试 Username with password
如果密码不行需要使用
GitLab 个人令牌
记得勾选
范围
构建触发器:
这里的触发器规则是这样的:
- 定时字符串从左往右分别是:分 时 日 月 周
js
# 每半小时构建一次OR每半小时检查一次远程代码分支,有更新则构建
H/30 * * * *
# 每两小时构建一次OR每两小时检查一次远程代码分支,有更新则构建
H H/2 * * *
# 每天凌晨两点定时构建
H 2 * * *
# 每月15号执行构建
H H 15 * *
# 工作日,上午9点整执行
H 9 * * 1-5
# 每周1、3、5,从8:30开始,截止19:30,每4小时30分构建一次
H/30 8-20/4 * * 1,3,5
构建环境:
注意:我们需要搭建 Node 的环境
- 第一步:配置 Node 的环境
- 第二步:安装 Node 的插件
第一步:安装 Node 的插件
第二步:安装指定的 Node 版本
第三步:配置 Node 环境
构建执行的任务:
- 查看 Node 的版本等是否有问题
- 执行
npm install
安装项目的依赖 - 移除原来 mall_cms 文件的所有内容
- 将打包的 dist 文件夹内容移动到 mall_cms 文件夹
bash
pwd
node -v
npm -v
npm install
npm run build
pwd
echo '构建成功'
ls
# 删除/root/mall_cms文件夹里所有的内容
rm -rf /root/mall_cms/*
cp -rf ./dist/* /root/mall_cms/
nginx 安装和配置
们部署会使用 nginx,所以需要先安装一下 nginx:
bash
$ dnf install nginx
启动 nginx:
bash
$ systemctl start nginx
$ systemctl status nginx
$ systemctl enable nginx
配置 nginx
通过 Linux 命令创建文件夹和文件:
bash
$ mkdir /root/mall_cms
$ cd /root/mall_cms
$ touch index.html
$ vi index.html
配置 nginx 访问目录:
nginx
# user nginx;
user root;
server {
location / {
root /root/mal_cms;
index index.html;
}
}