Jenkins自动化部署(虚拟机部署)
文章目录
- 一、持续集成和持续交付
- 二、自动化部署流程
- 三、虚拟机安装
- 四、安装Jenkins环境
- 4.1.安装java环境
- 4.2. 安装Jenkins
- 4.3.Jenkins配置
- 五、nginx安装和配置
- 5.1. 安装nginx
- 5.2.通过Linux命令创建文件夹和文件:
- 5.3. 配置nginx
- 六、将代码上传到Git仓库
- 七、Jenkins新建任务
如果存在服务器,就不需要看虚拟机的创建,直接从第四部分看起
自动化部署一般都是部署到云服务器上,但是为想了解如何实现自动化部署如何实现又不想去花钱购买云服务器,我选择在部署在虚拟机上。
一、持续集成和持续交付
伴随着DevOps一起出现的两个词就是持续集成和持续交付(部署):
- CI是Continuous Integration(持续集成);
- CD是两种翻译:Continuous Delivery(持续交付)或Continuous Deployment(持续部署);
持续集成CI:
持续交付和持续部署:
二、自动化部署流程
三、虚拟机安装
步骤一:
步骤二:
步骤三:
步骤四:
注意:我这里选择安装centOS 8,因为centOS8自带了dnf模块,后续安装java等比较方便
步骤五:
步骤六:
自己根据自己的电脑状况进行选择
步骤七:
这里内存尽量不要太少,后续node下载项目依赖可能会报错
步骤八:
步骤九:
步骤十:
步骤十一:
步骤十二:
步骤十三:
步骤十四:
可以看这篇帖子:帖子
镜像下载地址:镜像链接,自己可以根据情况选择其他镜像
步骤十五:
开启虚拟机,选择对应的语言
步骤十六:
点击“时间和日期”
步骤十七:
点击“安装源”
http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
步骤十八:
点击“软件选择”
步骤十九:
点击“网络和主机名”
步骤二十:
自己设置root密码和创建一个用户或者不创建用户
点击开始安装
四、安装Jenkins环境
可以通过Xshell连接虚拟机,我觉得Xshell敲命令比较舒服。通过
ip addr
命令查看虚拟机ip
4.1.安装java环境
Jenkins本身是依赖Java的,所以我们需要先安装Java环境:
提示:之前我安装的是java1.8的环境,后来报错说版本太低了需要11版本以上的
- 这里我安装了Java11的环境
dnf search java-11
dnf install java-11-openjdk.x86_64
同意并安装
注意:如何使用dnf命令报错
错误:为仓库 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist
使用这两条命令具体文章
sed -i -e “s|mirrorlist=|#mirrorlist=|g” /etc/yum.repos.d/CentOS-*
sed -i -e “s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g” /etc/yum.repos.d/CentOS-*
4.2. 安装Jenkins
因为Jenkins本身是没有在dnf的软件仓库包中的,所以我们需要连接Jenkins仓库:
-
wget是Linux中下载文件的一个工具,-O表示输出到某个文件夹并且命名为什么文件;如果没有找到wget命名需要yum工具下载它
-
rpm:全称为The RPM Package Manage,是Linux下一个软件包管理器;
# 需要将文件放到/etc/yum.repos.d/目录下面,如何没有通过mv命令移动到改目录
wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
# 下载完之后使用ls命令发现jenkins.repo没有在/etc/yum.repos.d/目录下
# 而是在执行命令目录的目录下,所以需要执行mv移到指定目录下
mv jenkins.repo /etc/yum.repos.d/
# 导入GPG密钥以确保您的软件合法
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
编辑一下文件/etc/yum.repos.d/jenkins.repo
- 可以通过vim或vi编辑,按i开始编辑,Esc->Shift+冒号->wq保存并退出;
配置文件内容和下方一样
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1
安装Jenkins
dnf install jenkins # --nogpgcheck(可以不加)
如果安装Jenkins安装失败,包这个错误需要将公钥升级
启动Jenkins的服务:
systemctl start jenkins
systemctl status jenkins
# 操作系统重启自动会启动Jenkins服务
systemctl enable jenkins
4.3.Jenkins配置
Jenkins默认使用8080端口提供服务,需要在虚拟机中将8080端口开放:ip:8080在浏览器中打开图形化界面
如果是服务器的话,需要将8080加入到安全组中
注意:如果想通过ifconfig查看ip需要yum -y install net-tools.x86_64下载改工具
# 开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看ip地址
ifconfig 或 ip addr
# 假如你的地址是192.168.18.129
# 那么在你的本地上运行 192.168.18.129:8080即可看到jenkins
- 成功界面
# 查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword
- 安装插件
- 创建管理员用户
然后一直确定就行,如何使用自己创建的管理员用户进行登录
五、nginx安装和配置
5.1. 安装nginx
后续我们部署会使用nginx,所以需要先安装一下nginx:
dnf install nginx
启动nginx:
systemctl start nginx
systemctl status nginx
systemctl enable nginx
# 开放8080端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看ip地址
ifconfig 或 ip addr
# 假如你的地址是192.168.18.129
# 那么在你的本地上运行 192.168.18.129:80即可看到nginx
- nginx启动页面
其实我们是访问的 /usr/share/nginx/html目录下的index.html
5.2.通过Linux命令创建文件夹和文件:
mkdir /root/mall_cms
cd /root/mall_cms
touch index.html
vi index.html
index.html中的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hi Nginx</title>
</head>
<body>
<h1>Hi Nginx</h1>
</body>
</html>
5.3. 配置nginx
我们这里主要配置nginx的用户和默认访问目录:
配置用户:
vi /etc/nginx/nginx.conf
- 将第五行的user nginx;改为user root;
- 将这个代码用#号注释掉 root /usr/share/nginx/html;改为# root /usr/share/nginx/html;
- 配置location /{}
# 改了nginx配置需要重启
systemctl restart nginx
发现nginx页面报403
# 修改配置文件 /etc/ selinux/config,将selinux=enforcing改为selinux=disabled
vi /etc/selinux/config
注意:修改配置文件需要重启系统 reboot
页面就出来了;
因此我们只需要将我们git仓库中的项目打包的dis文件下面的文件放到mall_cms下代替原来的index.html就行了;只不过这个替换过程是Jenkins自动化来处理的。仓库中的代码是过程git完成的,
六、将代码上传到Git仓库
将自己本地的代码上传到git仓库上就不做演示了可以看这篇文章
七、Jenkins新建任务
第一步
第二步:输入一个任务名称并选择Freestyle project按确定
第三步:添加描述
第四步:
- 因为Jenkins需要用git进行源码管理,所以需要在虚拟机安装git
# 安装git
dnf install git
第五步:拿到该链接并放到“Repository URL存储库 URL”中,然后并点击添加
这里密码需要注意,密码为gitee中设置->私人命牌->生成新令牌放到密码处点击确认
在Credentials 凭据处选中刚添加的
第六步:指定分支
第七步:构建触发器
构建触发器:
这里的触发器规则是这样的:
- 定时字符串从左往右分别是:分 时 日 月 周
#每半小时构建一次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
我们这里选择定时构建
H 9 * * *
第八步:构建环境
因为我们需要对项目打包等操作,需要使用node的环境,这里没有选择node.js的构建环境,所有需要去添加node.js的环境
- 先点击保存
- 点击Jenkins回到首页->点击Manage Jenkins->选择Plugins
等待安装好,安装完后勾选下面的重启并重新进 - 选择nodejs版本
- 先在自己电脑使用cmd查看本机node版本,建议node版本选择和本机一样的
- 添加node环境
点击去之后选择左侧的配置
选择构造环境中的Provide Node & npm bin/ folder to PATH,使用我刚添加的node16版本的
第九步:执行shell脚本
pwd
node -v
npm -v
npm install
npm run build
echo '构建完成'
ls
rm -rf /root/mall_cms/*
cp -rf ./dist/* /root/mall_cms/
然后点击保存
第十步:修改权限
我们后面会访问centos中的某些文件夹,默认Jenkins使用的用户是 jenkins
,可能会没有访问权限,所以我们需要修改一下它的用户:
修改 systemctl 启动服务时候,是使用的jenkins用户,改为root
vi /usr/lib/systemd/system/jenkins.service
# 使用find命名进行查找jenkins
find / -name "jenkins"
chown -R root:root /var/lib/jenkins
chown -R root:root /var/log/jenkins
chown -R root:root /var/cache/jenkins
将var目录下的文件修改权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
之后需要重启一下
reboot
然后选择构建
然后可以查看具体输出信息
构建成功
现在你的80端口变为了你的项目