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:
Jenkins自动化部署(虚拟机部署)_第1张图片
持续交付和持续部署:
Jenkins自动化部署(虚拟机部署)_第2张图片
Jenkins自动化部署(虚拟机部署)_第3张图片


二、自动化部署流程

Jenkins自动化部署(虚拟机部署)_第4张图片


三、虚拟机安装

步骤一:
Jenkins自动化部署(虚拟机部署)_第5张图片
步骤二:
Jenkins自动化部署(虚拟机部署)_第6张图片
步骤三:
Jenkins自动化部署(虚拟机部署)_第7张图片
步骤四:
注意:我这里选择安装centOS 8,因为centOS8自带了dnf模块,后续安装java等比较方便
Jenkins自动化部署(虚拟机部署)_第8张图片
步骤五:
Jenkins自动化部署(虚拟机部署)_第9张图片
步骤六:
自己根据自己的电脑状况进行选择
Jenkins自动化部署(虚拟机部署)_第10张图片
步骤七:
这里内存尽量不要太少,后续node下载项目依赖可能会报错
Jenkins自动化部署(虚拟机部署)_第11张图片
步骤八:
Jenkins自动化部署(虚拟机部署)_第12张图片
步骤九:
Jenkins自动化部署(虚拟机部署)_第13张图片
步骤十:
Jenkins自动化部署(虚拟机部署)_第14张图片
步骤十一:
Jenkins自动化部署(虚拟机部署)_第15张图片
步骤十二:
Jenkins自动化部署(虚拟机部署)_第16张图片
步骤十三:
Jenkins自动化部署(虚拟机部署)_第17张图片
步骤十四:
可以看这篇帖子:帖子
镜像下载地址:镜像链接,自己可以根据情况选择其他镜像Jenkins自动化部署(虚拟机部署)_第18张图片

Jenkins自动化部署(虚拟机部署)_第19张图片
Jenkins自动化部署(虚拟机部署)_第20张图片
步骤十五:
开启虚拟机,选择对应的语言
Jenkins自动化部署(虚拟机部署)_第21张图片
步骤十六:
点击“时间和日期”
Jenkins自动化部署(虚拟机部署)_第22张图片
步骤十七:
点击“安装源”
http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
Jenkins自动化部署(虚拟机部署)_第23张图片
步骤十八:
点击“软件选择”
Jenkins自动化部署(虚拟机部署)_第24张图片

步骤十九:
点击“网络和主机名”

Jenkins自动化部署(虚拟机部署)_第25张图片
步骤二十:
自己设置root密码和创建一个用户或者不创建用户
Jenkins自动化部署(虚拟机部署)_第26张图片
点击开始安装


四、安装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

Jenkins自动化部署(虚拟机部署)_第27张图片
同意并安装

注意:如何使用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工具下载它
    Jenkins自动化部署(虚拟机部署)_第28张图片

  • 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

Jenkins自动化部署(虚拟机部署)_第29张图片

编辑一下文件/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自动化部署(虚拟机部署)_第30张图片
启动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地址
ifconfigip addr
# 假如你的地址是192.168.18.129
# 那么在你的本地上运行 192.168.18.129:8080即可看到jenkins
  • 成功界面
# 查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkins自动化部署(虚拟机部署)_第31张图片

  • 安装插件
    Jenkins自动化部署(虚拟机部署)_第32张图片
  • 创建管理员用户
    Jenkins自动化部署(虚拟机部署)_第33张图片
    然后一直确定就行,如何使用自己创建的管理员用户进行登录

五、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地址
ifconfigip addr
# 假如你的地址是192.168.18.129
# 那么在你的本地上运行 192.168.18.129:80即可看到nginx
  • nginx启动页面
    Jenkins自动化部署(虚拟机部署)_第34张图片
    其实我们是访问的 /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 /{}
    Jenkins自动化部署(虚拟机部署)_第35张图片
    Jenkins自动化部署(虚拟机部署)_第36张图片
# 改了nginx配置需要重启
systemctl restart nginx

发现nginx页面报403

# 修改配置文件 /etc/ selinux/config,将selinux=enforcing改为selinux=disabled
vi /etc/selinux/config

Jenkins自动化部署(虚拟机部署)_第37张图片
注意:修改配置文件需要重启系统 reboot
页面就出来了;
因此我们只需要将我们git仓库中的项目打包的dis文件下面的文件放到mall_cms下代替原来的index.html就行了;只不过这个替换过程是Jenkins自动化来处理的。仓库中的代码是过程git完成的,
Jenkins自动化部署(虚拟机部署)_第38张图片

六、将代码上传到Git仓库

将自己本地的代码上传到git仓库上就不做演示了可以看这篇文章

七、Jenkins新建任务

第一步
Jenkins自动化部署(虚拟机部署)_第39张图片
第二步:输入一个任务名称并选择Freestyle project按确定
Jenkins自动化部署(虚拟机部署)_第40张图片
第三步:添加描述
Jenkins自动化部署(虚拟机部署)_第41张图片

第四步:

  • 因为Jenkins需要用git进行源码管理,所以需要在虚拟机安装git
# 安装git
dnf install git

第五步:拿到该链接并放到“Repository URL存储库 URL”中,然后并点击添加
Jenkins自动化部署(虚拟机部署)_第42张图片
Jenkins自动化部署(虚拟机部署)_第43张图片
这里密码需要注意,密码为gitee中设置->私人命牌->生成新令牌放到密码处点击确认
Jenkins自动化部署(虚拟机部署)_第44张图片

Jenkins自动化部署(虚拟机部署)_第45张图片
在Credentials 凭据处选中刚添加的
Jenkins自动化部署(虚拟机部署)_第46张图片
第六步:指定分支
Jenkins自动化部署(虚拟机部署)_第47张图片
第七步:构建触发器
构建触发器:

这里的触发器规则是这样的:

  • 定时字符串从左往右分别是:分 时 日 月 周
#每半小时构建一次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

我们这里选择定时构建
Jenkins自动化部署(虚拟机部署)_第48张图片

H 9 * * *

第八步:构建环境
因为我们需要对项目打包等操作,需要使用node的环境,这里没有选择node.js的构建环境,所有需要去添加node.js的环境

  • 先点击保存
  • 点击Jenkins回到首页->点击Manage Jenkins->选择Plugins
    Jenkins自动化部署(虚拟机部署)_第49张图片
    Jenkins自动化部署(虚拟机部署)_第50张图片
    等待安装好,安装完后勾选下面的重启并重新进
  • 选择nodejs版本
    Jenkins自动化部署(虚拟机部署)_第51张图片
  • 先在自己电脑使用cmd查看本机node版本,建议node版本选择和本机一样的
    Jenkins自动化部署(虚拟机部署)_第52张图片
    Jenkins自动化部署(虚拟机部署)_第53张图片
  • 添加node环境
    点击去之后选择左侧的配置
    Jenkins自动化部署(虚拟机部署)_第54张图片
    选择构造环境中的Provide Node & npm bin/ folder to PATH,使用我刚添加的node16版本的
    Jenkins自动化部署(虚拟机部署)_第55张图片
    第九步:执行shell脚本
    Jenkins自动化部署(虚拟机部署)_第56张图片
    Jenkins自动化部署(虚拟机部署)_第57张图片
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

Jenkins自动化部署(虚拟机部署)_第58张图片

# 使用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目录下的文件修改权限
Jenkins自动化部署(虚拟机部署)_第59张图片

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins

之后需要重启一下

reboot

然后选择构建

Jenkins自动化部署(虚拟机部署)_第60张图片

然后可以查看具体输出信息
Jenkins自动化部署(虚拟机部署)_第61张图片
构建成功
Jenkins自动化部署(虚拟机部署)_第62张图片
现在你的80端口变为了你的项目
Jenkins自动化部署(虚拟机部署)_第63张图片

你可能感兴趣的:(前端,jenkins,自动化,运维)