【DevOps】Jenkins项目发布

Jenkins项目发布

文章目录

  • Jenkins项目发布
    • 前言
    • 资源列表
    • 基础环境
    • 一、Jenkins发布静态网站
      • 1.1、项目介绍
      • 1.2、部署Web
      • 1.3、准备gitlab
      • 1.4、配置gitlab
      • 1.5、创建项目
      • 1.6、推送代码
    • 二、Jenkins中创建gitlab凭据
      • 2.1、创建凭据
      • 2.2、在Jenkins中添加远程主机
      • 2.3、获取gitlab项目的URL地址
      • 2.4、在Jenkins中创建webtest项目
      • 2.5、配置源码管理
      • 2.6、配置构建过程
      • 2.7、构建项目
      • 2.8、访问验证
    • 三、Jenkins发布带有参数的项目
      • 3.1、修改General参数
      • 3.2、修改源码管理
      • 3.3、构建项目
    • 四、Jenkins项目实时自动触发
      • 4.1、设置触发器
      • 4.2、生成token
      • 4.3、gitlab触发
      • 4.4、Outbound requests
      • 4.5、设置项目的webhook
      • 4.6、触发测试
      • 4.7、手动触发测试
    • 五、Jenkins+ansible+gitlab实现项目发布
      • 5.1、安装Ansible
      • 5.2、配置ansible主机清单
      • 5.3、Jenkins创建webansible项目
      • 5.4、配置General
      • 5.5、配置源码管理
      • 5.6、配置Build Steps
      • 5.7、增加构建步骤
      • 5.8、构建项目
      • 5.9、验证

前言

  • 随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好的协同工作以确保软件开发的质量已经慢慢成为开发过程各种不可回避的问题。Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降;持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、测试、部署得以持续。所以当配置完Jenkins持续集成持续交付环境后,可以把发布的任务交给集成服务器去打理了。使用Maven(Ant)等来实现自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等工作。
  • 本次课程我们来学习Jenkins代码发布的各个基础操作,为Jenkins的更高阶学习提供基础。

拓扑图
在这里插入图片描述

资源列表

操作系统主机名配置IP
CentOS 7.9jenkins2C4G192.168.93.101
CentOS 7.9gitlab2C4G192.168.93.102
CentOS 7.9web012C4G192.168.93.103
CentOS 7.9web022C4G192.168.93.104
CentOS 7.9dev2C4G192.168.93.105

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭selinux
setenforce 0
sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
hostnamectl set-hostname web01
hostnamectl set-hostname web02
hostnamectl set-hostname dev

一、Jenkins发布静态网站

1.1、项目介绍

  • 本案例部署了一个简单的静态网站,通过此操作过程,主要掌握代码发布的基本流程,以及在这个过程中我们需要注意的重点环节,也就是掌握Jenkins项目发布的入门级操作。在这些操作中,进一步学习Jenkins持续集成、持续部署流程。

1.2、部署Web

  • 两台web节点都要操作
yum -y install httpd
systemctl start httpd
systemctl enable httpd

1.3、准备gitlab

  • 在gitlab节点操作
[root@gitlab ~]# cat > /etc/yum.repos.d/gitlab-ce.repo << 'EOF'
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
EOF
[root@gitlab ~]# yum -y install gitlab-ce-16.7.0-ce.0.el7

1.4、配置gitlab

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# IP地址替换为自己的IP地址,然后保存退出即可
external_url 'http://192.168.93.102'# 加载gitlab
[root@gitlab ~]# gitlab-ctl reconfigure# 查看密码,然后更改密码,此次省略
[root@gitlab ~]# grep "Password:" /etc/gitlab/initial_root_password 

1.5、创建项目

  • 访问gitlab地址:http://192.168.93.102
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.6、推送代码

  • dev节点操作
# 安装git命令
[root@dev ~]# yum -y install git# 解压源代码
[root@dev ~]# tar -zxvf BlueLight.git.tar.gz # 拉取代码仓库
[root@dev ~]# git clone http://192.168.93.102/root/demo.git# 复制源代码到代码仓库
[root@dev ~]# mv -f BlueLight/* demo/
[root@dev ~]# cd demo/# 往main分支进行第一次推送
[root@dev demo]# git config --global user.email "you@example.com"
[root@dev demo]# git config --global user.name "Your Name"
[root@dev demo]# git add .
[root@dev demo]# git commit -m "first commit"
[root@dev demo]# git push -u origin main# 设置一个tag为v1.0并且推送
# v1.0没有index.html页面
[root@dev demo]# git tag v1.0
[root@dev demo]# git push -u origin v1.0# 设置一个tag为v2.0并且推送
# v2.0没有index.html页面
[root@dev demo]# cp bl-first-index.html index.html
[root@dev demo]# git add .
[root@dev demo]# git commit -m "first v2.0"
[root@dev demo]# git tag v2.0
[root@dev demo]# git push -u origin v2.0

二、Jenkins中创建gitlab凭据

2.1、创建凭据

  • 详细步骤省略
    在这里插入图片描述

2.2、在Jenkins中添加远程主机

  • “Manage Jenkins”——>“System”——>“Publish over SSH”,点击SSH Servers的新增按钮。须填写的信息如下:
    • Name:为远程主机的起的名字
    • Hostname:远程主机的IP地址或域名
    • Username:远程主机的登录账号
    • Remote Directory:远程同步路径(如果要拷贝文件,此处添加远程主机接口文件的目录)
    • 点击高级按钮,并勾选“Use password authentication,or use different key”
    • 在Passphrase/Password中输入密码
    • 其他保持默认,并点击test按钮进行连接测试,测试结果为Success表示参数设置成功
    • 最后保存设置
    • 可以用同样的方式添加更多的主机
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3、获取gitlab项目的URL地址

在这里插入图片描述

2.4、在Jenkins中创建webtest项目

在这里插入图片描述

在这里插入图片描述

2.5、配置源码管理

  • 在源码管理中选择Git,并且把gitlab中获取的仓库URL填写进去。注意在“指定分支”的地方,将分支名称修改为“*/main”。在git中我们创建一个新项目的时候,项目的分支由早期的“master”,修改为现在的“main“,使用的时候注意这个变化。
[root@jenkins ~]# yum -y install git

在这里插入图片描述

2.6、配置构建过程

  • 在本案例中,我们需要将web网站的代码文件同步到web01主机,需要同步文件,需要一个发送文件的构建步骤,具体操作如下:
  • 增加构建步骤”Send files or execute commands over SSH“需要设置的关键参数如下:
    • Name:在下拉菜单中选择目标主机
    • Source files:选择源文件位置,注意这里是工作目录的相对路径,不要些解决路径。如果要同步此目录下所有内容,就填写”*/“;如果要同步工作目录下的img目录下的所有文件,就填写”img/
    • Remove prefix:该操作是针对上面的source files目录,会移除匹配的目录。通常留空
    • Remote directory:远程主机的同步目录,注意这里也是相对路径。是相对于远程主机的同步目录的,我们在前面的远程主机中设置同步的目录是“/var/www/html”,此处就直接些“/”,代表将文件同步到远程主机的“/var/www/html”目录下
    • 如果需要将文件批量同步到更多的主机,可以继续增加构建步骤。
      在这里插入图片描述
      在这里插入图片描述

2.7、构建项目

  • 点击Jenkins项目,点“Build Now”或“立即构建”,如果成功将会在左下角看到绿色的标识

在这里插入图片描述

2.8、访问验证

  • 访问地址:http://192.168.93.103/bl-first-index.html
    在这里插入图片描述

三、Jenkins发布带有参数的项目

  • 在刚才的案例中,我们掌握了项目发布的基本步骤,在实际工作过程中,程序员往往要对代码进行不断的升级,这时就出现了不同的版本,如果针对不同的项目版本进行发布,这也是Jenkins的一项基本功能。不仅能帮助管理员灵活的、有针对性的版本发布,同时在新版本出现bug的时候,又能快速的将项目回退到之前的版本。

3.1、修改General参数

  • 勾选“This project js parameterized”,并点击“添加参数”,添加“Git Parameter”参数。设置的参数如下:名称:Tag 默认值:origin/main
    在这里插入图片描述
    在这里插入图片描述

3.2、修改源码管理

在这里插入图片描述

3.3、构建项目

  • 点击“Build Now”立即构建。额可以看到此处需要选择对应的标签版本
  • v1.0没有index.html页面,v2.0有index.html页面
    在这里插入图片描述

四、Jenkins项目实时自动触发

  • 在配置Jenkins实现前端自动化构建的过程中,Git如何通知Jenkins对应Job的工作区实时构建呢?web开发过程中的webhook,是一种通过通常的callback,去增加或者改变web page或者web app行为的方法。这些callback可以由第三方用户和开发维持当前,修改,管理,而这些使用者与网站或者应用的原始开发并没有关联。
  • webhook这个词是由Jeff Lindsay在2007年计算机科学hook项目第一次提出的。Webhooks是“user-defined HTTP回调”。它们通常由一些事件触发,例如“push”代码到repo,或者“post一个评论道博客”。因此,我们可以将Jenkins的某个项目的webhook放置到gitbal,当gitlab中对应的项目代码有更新时,就会向jenkins触发一个构建的事件,这样就完成了一个项目自动触发的流程。
    在这里插入图片描述

4.1、设置触发器

  • 项目——>“配置”——>“构建触发器”,勾选项目的webhook
  • 复制出里面的webhook URL
    在这里插入图片描述

4.2、生成token

  • 在“构建触发器”中生成一个Token,并且把这个Token复制出来
    在这里插入图片描述
    在这里插入图片描述

4.3、gitlab触发

  • 单击Menu——>“Admin”
    在这里插入图片描述

4.4、Outbound requests

  • 在这里要设置gitlab允许利用钩子(webhook)发送请求到本地网络
  • 设置如下:Menu——>”Admin“——>“Settings”——>”Network“——>”Outbound requests“
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.5、设置项目的webhook

  • 打开自己创建的项目,Settings——>”Webhooks“
  • 粘贴前面步骤中生成的webhook的URL和Token
  • 最后点击页面底部的Add Webhook按钮
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.6、触发测试

在这里插入图片描述

在这里插入图片描述

4.7、手动触发测试

  • 也可以手动测试,修改代码以后,提交上去
# 把默认dev主机存在的demo目录删除,重新拉取一个
[root@dev ~]# rm -rf demo/# 拉取代码仓库
[root@dev ~]# git clone http://192.168.93.102/root/demo.git[root@dev ~]# cd demo/
[root@dev demo]# date > time.log
[root@dev demo]# git config --global user.email "you@example.com"
[root@dev demo]# git config --global user.name "Your Name"
[root@dev demo]# git add .
[root@dev demo]# git commit -m "测试自动触发Jenkins"
[root@dev demo]# git push -u origin main

在这里插入图片描述

五、Jenkins+ansible+gitlab实现项目发布

  • 在此案例中,我们将进一步学习Jenkins较为复杂一点的应用,本案例将ansible集成到了jenkins中,让jenkins利用ansible插件,向远程主机推送文件和指令,完成自动化的项目部署。

  • 在web集群中,我们可能有很多后端需要发布,这时候我们可以利用ansible批量进行发布

5.1、安装Ansible

  • Jenkins节点操作
[root@jenkins ~]# yum -y install epel-release.noarch
[root@jenkins ~]# yum -y install ansible# 取消/etc/ansible/anibsle.cfg文件host_key_checking = False的注释
[root@jenkins ~]# vim /etc/ansible/ansible.cfg
host_key_checking = False

5.2、配置ansible主机清单

[root@jenkins ~]# cat >> /etc/ansible/hosts << EOF
[webservers]
# web01
192.168.93.103 ansible_ssh_user=root ansible_ssh_pass=wzh.2005
# web02
192.168.93.104 ansible_ssh_user=root ansible_ssh_pass=wzh.2005
EOF

5.3、Jenkins创建webansible项目

在这里插入图片描述

5.4、配置General

在这里插入图片描述
在这里插入图片描述

5.5、配置源码管理

在这里插入图片描述

5.6、配置Build Steps

  • 在”Build Steps“中,点”增加构建步骤“——>”Invoke Ansible Ad-Hoc Command“,在这里设置的主要参数如下:
    • Host pattern:设置ansible中的主机组的名字,本案例中我们用的是”webservers“
    • Inventory:选择File or host list,添加的文件是ansible的主机清单/etc/ansible/hosts
    • Moundle:设置同步方式,此处使用”synchronize“的方式,表示使用rsync同步
    • Module arguments or command to execute:填写ansible的同步命令:命令如下
src=./ dest=/var/www/html rsync_opts=--exclude=.git delete=yes# 备注:ansible命令解释
rsync_opts=--exclude=.git:同步时将.git文件除外,该文件不同步
delete=yes:使两边的内容一样(即以推送方为主)

在这里插入图片描述

5.7、增加构建步骤

在这里插入图片描述

# 使用ansible给web节点的网页重新授权
ansible webservers -m shell -a "chmod -R 755 /var/www/html"
# 安装所需同步软件
[root@jenkins ~]# yum -y install rsync
[root@web01 ~]# yum -y install rsync
[root@web02 ~]# yum -y install rsync

在这里插入图片描述

5.8、构建项目

在这里插入图片描述

5.9、验证

  • 可以查看web01和web02节点的网页是否存在
[root@web01 ~]# ls /var/www/html/
aos             bl-aritical.html       bootstrap     highlight  LICENSE
bl-about2.html  bl-aritical-list.html  css           img        README.md
bl-about.html   bl-first-index.html    font-awesome  jquery     screenshots
[root@web02 ~]# ls /var/www/html/
aos             bl-aritical.html       bootstrap     highlight  LICENSE
bl-about2.html  bl-aritical-list.html  css           img        README.md
bl-about.html   bl-first-index.html    font-awesome  jquery     screenshots
  • 也可以浏览器进行访问,两个网站内容一样

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2/Vue3使用DataV

Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…

【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入学习&#xff08;一&#xff09;&#xff1a;Sinusoidal位置编码的精妙》 一、MHA、MQA、GQA 为了降低KV cache&#xff0c;MQA、GQA作为MHA的变体&#xff0c;很容易理解。 多头注意力&#xff08;MHA&#xff09;&#xff1a; 多头注…

trendFinder - 利用 AI 掌握社交媒体上的热门话题

1600 Stars 177 Forks 7 Issues 2 贡献者 MIT License Javascript 语言 代码: https://github.com/ericciarla/trendFinder 更多AI开源软件&#xff1a;AI开源 - 小众AI Trend Finder 收集并分析来自关键影响者的帖子&#xff0c;然后在检测到新趋势或产品发布时发送 Slack 通知…

以图像识别为例,关于卷积神经网络(CNN)的直观解释

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 作者以图像识别为例&#xff0c;用图文而非数学公式的方式解释了卷积神经网络的工作原理&#xff0c; 适合初学者和外行扫盲。 目录 1 卷积神经网络&#xff08;CNN&#xff09; 1.1 应用场景 1.2 起…

vim 的基础使用

目录 一&#xff1a;vim 介绍二&#xff1a;vim 特点三&#xff1a;vim 配置四&#xff1a;vim 使用1、vim 语法格式2、vim 普通模式&#xff08;1&#xff09;保存退出&#xff08;2&#xff09;光标跳转&#xff08;3&#xff09;文本删除&#xff08;4&#xff09;文本查找&…

HP 电脑开机黑屏 | 故障判断 | BIOS 恢复 | BIOS 升级

注&#xff1a;本文为 “HP 电脑开机黑屏 | 故障判断 | BIOS 恢复 | BIOS 升级” 相关文章合辑。 引文图片 csdn 转储异常&#xff0c;重传。 篇 1&#xff1a;Smart-Baby 回复中给出故障现象判断参考 篇 2、篇3 &#xff1a;HP 官方 BIOS 恢复、升级教程 开机黑屏&#xff0c…

JAVA:利用 Redis 实现每周热评的技术指南

1、简述 在现代应用中&#xff0c;尤其是社交媒体和内容平台&#xff0c;展示热门评论是常见的功能。我们可以通过 Redis 的高性能和丰富的数据结构&#xff0c;轻松实现每周热评功能。本文将详细介绍如何利用 Redis 实现每周热评&#xff0c;并列出完整的实现代码。 2、需求分…

VSCode下配置Blazor环境 断点调试Blazor项目

VSCode下使用Blazor的环境配置和插件推荐 Blazor是一种用于构建交互式Web UI的.NET框架&#xff0c;它可以让你使用C#、Razor和HTML进行Web开发&#xff0c;而不需要JavaScript。在这篇文章中&#xff0c;我们将介绍如何在VSCode中配置Blazor环境&#xff0c;并推荐一些有用的…

《Rust权威指南》学习笔记(一)

基本介绍 1.Rust使用场景 &#xff1a;需要运行速度、需要内存安全、更好的利用多处理器。程序员无法在安全的Rust代码中执行任何非法的内存操作。相对于C#等带有垃圾回收机制的语言来讲&#xff0c;Rust遵循了零开销抽象&#xff08;Zero-Cost Abstraction&#xff09;规则&a…

STM32-笔记26-WWDG窗口看门狗

一、简介 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器&#xff08;有的地方说7位。其实都无所谓&#xff0…

机组的概述

计算机系统组成 硬件系统和软件系统 计算机硬件 1.冯诺依曼机基本思想 特点 1.采用“存储程序”工作方式 2.硬件系统由运算器&#xff0c;存储器&#xff0c;控制器&#xff0c;输入输出设备组成 3.指令和数据存在存储器中&#xff0c;形式无区别 4.指令和数据用二进制代…

TypyScript从入门到精通

TypyScript从入门到精通 TypyScript 是什么&#xff1f;增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型&#xff1a;3.…

Tableau数据可视化与仪表盘搭建-安装教程

下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录&#xff0c;去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装&#xff0c;会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…

Scala_【4】流程控制

第四章 分支控制if-else单分支双分支多分支返回值嵌套分支 For循环控制包含边界不包含边界循环守卫循环步长嵌套循环循环返回值 While循环Break友情链接 分支控制if-else 单分支 双分支 多分支 返回值 嵌套分支 For循环控制 Scala也为for循环这一常见的控制结构提供了非常多的…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 &#xff08;1&#xff09;常见的日志级别优先级 &#xff08;2&…

ESP32自动下载电路分享

下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候&#xff0c;需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上&#xff0c;按住按键拉低IO0的同时重新上电的方式进入烧写…

1-markdown转网页样式页面 --[制作网页模板] 【测试代码下载】

markdown转网页 将Markdown转换为带有样式的网页页面通常涉及以下几个步骤&#xff1a;首先&#xff0c;需要使用Markdown解析器将Markdown文本转换为HTML&#xff1b;其次&#xff0c;应用CSS样式来美化HTML内容。此外&#xff0c;还可以加入JavaScript以增加交互性。下面我将…

Eplan 项目结构(高层代号、安装地点、位置代号)

Eplan中的项目结构分为3个层次&#xff1a; &#xff08;1&#xff09;功能面结构。指明这个系统的功能&#xff0c;有什么用途。在EPlan中&#xff0c;指的就是"高层代号&#xff08;&#xff09;"。 一般指的是线体。 &#xff08;2&#xff09;位置面结构。指明该…

《Armv8-A virtualization》学习笔记

1.MAIR 的全称是 Memory Attribute Indirection Register。它是ARM架构中的一种寄存器&#xff0c;用于定义内存的属性&#xff0c;并提供一种间接访问内存属性的机制。MAIR寄存器包含多个字段&#xff0c;这些字段指示不同类型内存的属性&#xff0c;例如是否可以缓存、是否为…

如何使用OBS Studio录制屏幕?

可以进入官网或github进行下载&#xff1a; https://obsproject.com/download 安装包解压后进入bin 进入64-bit 选择obs 64 进入OBS Studio后在来源内右键&#xff0c;选择添加 选择添加显示器采集即可录取整个屏幕&#xff0c;窗口采集可选择窗口进行录制 选择对应显示器即配置…