• 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
    
    • 1
    • 2

    在这里插入图片描述
    同意并安装

    注意:如何使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    编辑一下文件/etc/yum.repos.d/jenkins.repo

    • 可以通过vim或vi编辑,按i开始编辑,Esc->Shift+冒号->wq保存并退出;
    • 配置文件内容和下方一样
    [jenkins]
    name=Jenkins-stable
    baseurl=http://pkg.jenkins.io/redhat
    gpgcheck=1
    
    • 1
    • 2
    • 3
    • 4

    安装Jenkins

    dnf install jenkins # --nogpgcheck(可以不加)
    
    • 1

    如果安装Jenkins安装失败,包这个错误需要将公钥升级
    在这里插入图片描述
    启动Jenkins的服务:

    systemctl start jenkins
    systemctl status jenkins
    # 操作系统重启自动会启动Jenkins服务
    systemctl enable jenkins
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 成功界面
    # 查看密码
    cat /var/lib/jenkins/secrets/initialAdminPassword
    
    • 1
    • 2

    在这里插入图片描述

    • 安装插件
      在这里插入图片描述
    • 创建管理员用户
      在这里插入图片描述
      然后一直确定就行,如何使用自己创建的管理员用户进行登录

    五、nginx安装和配置

    5.1. 安装nginx

    后续我们部署会使用nginx,所以需要先安装一下nginx:

    dnf install nginx
    
    • 1

    启动nginx:

    systemctl start nginx
    systemctl status nginx
    systemctl enable nginx
    
    • 1
    • 2
    • 3
    # 开放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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • nginx启动页面
      在这里插入图片描述
      其实我们是访问的 /usr/share/nginx/html目录下的index.html

    5.2.通过Linux命令创建文件夹和文件:

    mkdir /root/mall_cms
    cd /root/mall_cms
    touch index.html
    vi index.html
    
    • 1
    • 2
    • 3
    • 4

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5.3. 配置nginx

    我们这里主要配置nginx的用户和默认访问目录:

    配置用户:

    vi /etc/nginx/nginx.conf
    
    • 1
    • 将第五行的user nginx;改为user root;
    • 将这个代码用#号注释掉 root /usr/share/nginx/html;改为# root /usr/share/nginx/html;
    • 配置location /{}
      在这里插入图片描述
      在这里插入图片描述
    # 改了nginx配置需要重启
    systemctl restart nginx
    
    • 1
    • 2

    发现nginx页面报403

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

    在这里插入图片描述
    注意:修改配置文件需要重启系统 reboot
    页面就出来了;
    因此我们只需要将我们git仓库中的项目打包的dis文件下面的文件放到mall_cms下代替原来的index.html就行了;只不过这个替换过程是Jenkins自动化来处理的。仓库中的代码是过程git完成的,
    在这里插入图片描述

    六、将代码上传到Git仓库

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

    七、Jenkins新建任务

    第一步
    在这里插入图片描述
    第二步:输入一个任务名称并选择Freestyle project按确定
    在这里插入图片描述
    第三步:添加描述
    在这里插入图片描述

    第四步:

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

    第五步:拿到该链接并放到“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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    我们这里选择定时构建
    在这里插入图片描述

    H 9 * * *
    
    • 1

    第八步:构建环境
    因为我们需要对项目打包等操作,需要使用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/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    然后点击保存
    第十步:修改权限
    我们后面会访问centos中的某些文件夹,默认Jenkins使用的用户是 jenkins,可能会没有访问权限,所以我们需要修改一下它的用户:
    修改 systemctl 启动服务时候,是使用的jenkins用户,改为root

    vi /usr/lib/systemd/system/jenkins.service
    
    • 1

    在这里插入图片描述

    # 使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    将var目录下的文件修改权限
    在这里插入图片描述

    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    
    • 1
    • 2

    之后需要重启一下

    reboot
    
    • 1

    然后选择构建

    在这里插入图片描述

    然后可以查看具体输出信息
    在这里插入图片描述
    构建成功
    在这里插入图片描述
    现在你的80端口变为了你的项目
    在这里插入图片描述

  • 相关阅读:
    OLTP和OLAP有什么区别和不同?
    【Delphi】让APP“鸡鸣鸟叫”(同时支持ios\android\windows\macos)
    nginx(七十九)nginx与tls/ssl续
    自学Python第十八天-自动化测试框架(二):DrissionPage、appium
    Python VScode 配置
    Python/C API - 模組,型別,Tuple,例外和引用計數
    vscode推送gitee方法
    Kubernetes---使用端口转发来访问集群中的应用
    57.【全排列的详细分析】
    文件隐藏 [极客大挑战 2019]Secret File1
  • 原文地址:https://blog.csdn.net/m0_46165586/article/details/134463450