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地址
ifconfigip 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地址
ifconfigip 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端口变为了你的项目
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/169419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

趣学python编程(六、关于蓝桥杯比赛)

蓝桥杯全国软件和信息技术专业人才大赛简称“蓝桥杯”&#xff0c;是由工业和信息化部人才交流中心举办的国内最大的信息技术竞赛。为促进中小学科技创新&#xff0c;提升中小学生逻辑思维&#xff0c;发现和培养面向未来的科技精英人才。 蓝桥杯介绍 蓝桥杯全国软件和信息技术…

【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 本章将介绍视觉SLAM的基本问题之一&#xff1a;如何描述刚体在三维空间中的运动&#xff1f; 旋转矩阵 点、向量和坐标系 三维空间由3个轴组成&…

C++数据结构:并查集

目录 一. 并查集的概念 二. 并查集的模拟实现 2.1 并查集类的声明 2.2 并查集的实现 三. 路径压缩 四. 总结 一. 并查集的概念 在生活中&#xff0c;我们经常需要对某一些事物进行归类处理&#xff0c;即&#xff1a;将N个不同的元素划分为几个互不相交的集合。在初始状态…

如何解决网站被攻击的问题:企业网络攻防的关键路径

在当今数字化时代&#xff0c;企业面临着不断升级的网络威胁&#xff0c;网站遭受攻击的风险也与日俱增。解决网站被攻击的问题对企业发展至关重要&#xff0c;不仅关系到企业的信息安全&#xff0c;也直接影响到企业的声誉和利益。从企业发展的角度出发&#xff0c;我们将探讨…

安装oracle19c卡在安装界面

我在个人window10电脑上安装 Oracle 19c 时遇到问题。解压后的数据库文件放在没有中文的文件目录下面&#xff0c;用管理员用户启动 CMD 窗口进行安装&#xff0c;但随后卡在菜单上。 取消安装之后去任务管理器中的服务里停掉OracleRemExecServiceV2服务。 用管理员运行CMD…

在VSCode创建vue项目,出现“因为在此系统上禁止运行脚本”问题

问题&#xff1a;vue : 无法加载文件 C:\Users\***\***\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 ht tps:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 解决&#xff…

【23真题】超难985!做完感觉没学过!

本套试卷难度分析&#xff1a;22年西北工业大学827考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;本套试题内容有难度&#xff0c;题目考察全为大题&#xff0c;题目不多&#xff01;但是题目都很新颖&#xff0c;状态方程的题目考察较…

企业实现员工聊天和转账行为的实时监管

如何解决企业营销团队的管理问题&#xff1f; 在当今竞争激烈的市场环境中&#xff0c;企业营销团队的管理显得尤为重要。营销团队是企业发展的重要支柱&#xff0c;然而&#xff0c;一些常见的问题如员工飞单、私单、辱骂删除客户、离职带走公司客户以及工作不认真、工作量无…

吐槽一个 R package :DSS

TMD&#xff01;&#xff01;&#xff01; 前言 最近在整理WGBS分析的流程&#xff0c;下游需要找 Differentially Methylated Loci (DML) / Region (DMR)&#xff0c;类似普通转录组中的差异分析。之前看的一篇文章提到一个R package &#xff1a; DSS&#xff0c;看Biocond…

虹科示波器 | 汽车免拆检修 | 1994款凯迪拉克fleetwood车发动机无法起动

一、故障现象 一辆1994款凯迪拉克fleetwood车&#xff0c;搭载5.7L发动机&#xff08;燃油系统采用进气歧管多点喷射&#xff0c;每个气缸都有独立的喷油器&#xff1b;点火系统只有一个点火线圈&#xff0c;带机械分电器和高压线&#xff09;&#xff0c;发动机无法起动。 二、…

【PCB学习】几种接地符号

声明 该图并非原创&#xff0c;原文出处不可考&#xff0c;因此在这里附加说明。 示意图

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限&#xff0c;默认是没有root密码的&#xff0c;所以首先需要设置root密码&#xff1a; sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…

Redis篇---第十篇

系列文章目录 文章目录 系列文章目录前言一、怎么提高缓存命中率&#xff1f;二、Redis 如何解决 key 冲突&#xff1f;三、Redis 报内存不足怎么处理&#xff1f; 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分…

基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码

基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于饥饿游戏优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

FPGA系列:1、FPGA/verilog源代码保护:基于Quartus13.1平台保护verilog源码发给第三方但不泄露源码

catlog 需求具体步骤工程描述去掉相关调试文件切换顶层模块并导出相应模块为网表文件切换回原顶层模块并添加相应保护模块的qxp文件再次编译工程 参考&#xff1a; 需求 有时需要将源码交付给第三方&#xff0c;但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此&…

IIC总线逻辑

一、 我们习以为常的IIC通常是什么样子&#xff1f; 在我们研发/应用工程师眼中&#xff0c;IIC的形象通常是如图这样的吧&#xff1f;&#xff08;你们说是不是&#xff1f;&#xff09; 是的&#xff0c;对于理想的硬件调程序&#xff0c;这个层…

改进YOLOv8:结合ConvNeXt V2骨干网络!使用MAE共同设计和扩展ConvNet

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

开发仿抖音APP遇到的问题和解决方案

uni-app如何引入阿里矢量库图标/uniapp 中引入 iconfont 文件报错文件查找失败 uni-app如何引入阿里矢量库图标 - 知乎 uniapp 中引入 iconfont 文件报错文件查找失败&#xff1a;‘./iconfont.woff?t1673007495384‘ at App.vue:6_宝马金鞍901的博客-CSDN博客 将课件中的cs…

8.6 矢量图层点要素基于规则(Rule-based)渲染使用

文章目录 前言基于规则&#xff08;Rule-based&#xff09;QGis代码实现 总结 前言 前面介绍了矢量-点要素-单一符号、矢量-点要素-分类符号以及矢量-点要素-分级符号的使用本章介绍如何使用基于规则的渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps …

Codeforces Round 908 (Div. 2)

一个教训&#xff1a;做题的时候一定要自己模拟一遍所有样例&#xff0c;这样思路出来的很快&#xff01;&#xff01;&#xff01; C. Anonymous Informant Example input Copy 6 5 3 4 3 3 2 3 3 100 7 2 1 5 5 6 1 1 1 1 1 1000000000 1 8 48 9 10 11 12 13 14 …