前端Gitee + Jenkins自动化实战(转)

news2024/11/26 0:25:54

# 前端Gitee + Jenkins自动化实战

当我们熟悉了Jenkins 的使用后,接下来我们来配置一个基于 vue-element-admin 的实战项目,来感受一下自动化流程带给我们的优势。

首先我们需要创建一个 git 项目,至于代码仓库可以自选,这里为了国内方便访问,我选择了 Gitee ,然后我们需要给 Jenkins 配置一些插件,比如 NodeJS 等,创建一个构建任务,关联 git 代码仓库,编写 vue 项目的编译打包脚本,再将打包后的产物部署到云服务器,这里演示的是阿里云的Nginx服务器。

# 创建git项目

这里以Gitee作为代码仓库,也可以使用Github/Gitlab等仓库。

假设创建的仓库地址是:https://gitee.com/xxx/jenkins_test.git(创建过程很简单,就不演示了)

提示

Git 可以创建私有项目哦。

# 安装Jenkins插件

安装Gitee插件

因为这里使用了Gitee,我们需要在Jenkins中安装Gitee插件:

在这里插入图片描述

注意

安装完记得重启Jenkins,否则新安装的插件不会显示哦。

配置Gitee

在[Jenkins] > [系统管理] > [系统配置] > [Gitee配置] 配置 Gitee 信息:

在这里插入图片描述

  • 链接名:输入Gitee或随便输入你想要的名称
  • Gitee域名URL:输入Gitee完整的URL地址 https://gitee.com
  • 证书令牌:如没有添加需要新建一个,点击添加(如下图)

在这里插入图片描述

  • Domain:选择全局凭据
  • 类型:选择Gitee API令牌
  • 范围:选择全局
  • Gitee APIV5 私人令牌,点击获取 (opens new window)
  • ID 和 描述就随便写不一样的就行

添加完令牌就直接选择就行,然后点击【测试链接】,如果出现成功则表示配置正确:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gu0hf9QV-1670383553090)(/notes-page/assets/img/20210324170446534.a760d866.png)]

安装NodeJS

因为我们的Vue项目是基于 NodeJS 来打包构建的,所以需要在 Jenkins 中安装插件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l1KAKVfQ-1670383553091)(/notes-page/assets/img/20210324203031178.576d221c.png)]

配置NodeJS

在[系统管理] > [系统配置] > [全局工具配置] > [NodeJS] 点击【NodeJS安装】:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H7mI8944-1670383553091)(/notes-page/assets/img/20210420210529926.297820e6.png)]

注意

NodeJS
版本不要选太高,选最新的LTS版本即可,否则可能因为版本不兼容导致构建失败,建议选择版本和本地开发的版本相同,这样就不会有问题了。

# 构建任务配置

Jenkins 首页点击【新建任务】开始第一个流水线的构建,选择构建一个自由风格的软件项目 点击保存即可创建构建项目:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tfZ08jQP-1670383553092)(/notes-page/assets/img/20210324170835154.98dd5a36.png)]

新建完成后进入配置,流水线会按照 [General] > [源码管理] > [构建触发器] > [构建环境] > [构建] > [构建后操作]的步骤来执行自动化任务。

# General

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4tsw4WSP-1670383553092)(/notes-page/assets/img/20210324171712229.fd78fbad.png)]

# 源码管理

  • 选择 Git 选项
  • Repository URL: 创建的git项目地址
  • Credentials:点击添加一个凭据(注意 Gitee API Token 凭据不可用于源码管理的凭据,只用于gitee插件的 API 调用凭据)
  • 点击【高级】 Advanced 按钮,Name输入origin,Refspec输入+refs/heads/*:refs/remotes/origin/*
  • 指定分支:master

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8a7dK0VL-1670383553093)(/notes-page/assets/img/20210324194748464.279d34ce.png)]

# 触发器配置

这里选择配置 push 代码立即触发构建任务,勾选 Gitee webhook触发构建,后面有个地址这个后面需要配置到GiteeGitee触发构建策略勾选推送代码,其他先默认就行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1zexPC2-1670383553093)(/notes-page/assets/img/20210324193112270.57b59266.png)]

后面有个 Gitee WebHook密码 栏位需要配置到Gitee,点击生成就会生成一个密码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fbu4L72z-1670383553094)(/notes-page/assets/img/20210324193145702.c6eb229f.png)]

打开 Gitee 项目的管理选项卡,左侧有个[WebHooks]菜单 ,点击【添加webHook】:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8Fcf384-1670383553094)(/notes-page/assets/img/20210324193317281.6ac38d30.png)]

将上一步 Jenkins 生成的URL密码填进去,点击【添加】:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xbMa1tF-1670383553095)(/notes-page/assets/img/20210324193430983.8d8d89dd.png)]

# 构建环境

修改构建任务的构建环境,勾选 Provide Node & npm bin/ folder to PATH ,默认会选择Jenkins安装的NodeJS版本:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ckwwf5kd-1670383553096)(/notes-page/assets/img/20210420221323687.b509abed.png)]

# 构建脚本

选择【执行shell】:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-09YIcniK-1670383553096)(/notes-page/assets/img/20210324200306648.07f96ef5.png)]

先随便写一个shell脚本试试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lc4hUMh6-1670383553097)(/notes-page/assets/img/2021032420025598.4598b783.png)]

保存后,触发一次提交,看看控制台输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5KnGxU8-1670383553098)(/notes-page/assets/img/20210324201532828.fde990fb.png)]

# 构建及部署

背景介绍:jenkins通过Docker容器的方式安装

需求:Vue项目打包发布到装有nginx的服务器

思路:vue项目通过 NodeJS 构建后,需要将构建后的 dist 文件夹的内容部署到云服务器,因为 JenkinsDocker 容器创建的,容器内部不能直接移动文件,因为没有挂载volumn,所以这里可以使用 SSH 的方式来传输容器的构建文件到nginx服务器。

# 安装插件Publish Over SSH

先来安装下Publish over SSH,进入插件管理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR2k36Ej-1670383553098)(/notes-page/assets/img/20210325193332944.fe606513.png)]

安装完成后,在[系统管理] > [系统配置] 会多出一个Publish over SSH:

在需要部署的目标云服务器生成密钥:

$ ssh-keygen -t rsa -C "xxxx@qq.com"
# 将公钥放到authorized_keys,否则SSH Server配置会不成功
$ cat id_rsa.pub >> authorized_keys

Key 栏位填写私钥:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nPeFC4D1-1670383553099)(/notes-page/assets/img/20210406223639894.27cd7d8a.png)]

设置 SSH 目标服务器的信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZ54YT3q-1670383553099)(/notes-page/assets/img/2021040623530727.6144cbb9.png)]

# 配置Node.js环境

安装Node插件:https://plugins.jenkins.io/nodejs/ (opens new window)

可以系统设置 -> 全局工具配置 -> 安装Node.js LTS版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-plX2cPMl-1670383553099)(/notes-page/assets/img/image-20210730154148534.f63b8074.png)]

配置如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O1CdscqO-1670383553100)(/notes-page/assets/img/image-20210730155447847.5acc54e7.png)]

# 构建与发布

点击 【Test Configuration】按钮,左侧显示 Success 即表示SSH可以连接成功。

[构建步骤]修改下 shell 脚本,进行 vue安装打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uY2qjxmH-1670383553100)(/notes-page/assets/img/2021040811374362.8237423c.png)]

先添加一个Transfer Set删除部署目录的文件,假如 nginx 配置的 root 目录为/usr/share/nginx/flower_html/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FnYFS3FQ-1670383553101)(/notes-page/assets/img/20210407153217299.ed823d71.png)]

再加一个 Transfer Set 传送文件到部署目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kbeWWuUO-1670383553101)(/notes-page/assets/img/20210407153314897.43b70b62.png)]

都设置好了,来触发一次构建,部署效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dEuh2iYj-1670383553102)(/notes-page/assets/img/2021040811382869.e60cb9be.png)]

有了 Jenkins 自动化部署,以后我们只需要关注代码层面即可,修改完代码,提交到 Git 仓库,然后 Jenkins 会自动帮我们构建、打包、部署,是不是很方便呢。

转载至:https://front-end.toimc.com/notes-page/devops/jenkins/03-gitee.html#%E6%9E%84%E5%BB%BA%E4%B8%8E%E5%8F%91%E5%B8%83

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

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

相关文章

RocketMq: Windows环境-单机部署和多种主从集群场景部署

关于默认端口 broker的默认端口有3个,10911, 10912, 10909。 10911是remotingServer使用的监听端口,remotingServer主要处理以下三类消息: producer发送的消息 conumser在消费失败或者消费超时发送的消息 consumer拉取消息10912是主broker用于监听从broker请求…

HTML学生个人网站作业设计:公益专题扫黑除恶(HTML+CSS)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

扩散模型Diffusion轻松入门

如果要问最近模型领域什么东西最火,应该非扩散模型莫属,火得我觉得不系统学习一下都不行! 本文是我的学习笔记,只能叫入门文章,因为扩散模型的严谨数学推导公式很多,还没有研究透彻,不敢说一文…

c语言:关键字(二)

关键字一.声明的关键词—extern二.最名不符实的关键字—static一.声明的关键词—extern 首先这里问两个问题 1.变量可以跨文件访问吗? 2.函数可以跨文件访问吗? 答案是都可以 那么什么是跨文件呢? 我在game.c里定义show函数,但…

Vue2基础篇-01-Vue2 入门概述

1. 概述 该教程站在小白的角度,去帮助理解和使用,达到入门的效果;该教程覆盖面比较浅,更多详情请查阅 Vue2文档 ,目前最新是Vue3文档,但是Vue2是公司目前大多数使用的;欢迎大家一起指正并下方留…

Unity 符号表

目录 前言 关于Unity符号表 正文 程序crash日志: 解析 后记 记一次 Bugly 崩溃查找过程 unity-il2cpp: 前言 关于Unity符号表 关于项目真机调试时的崩溃问题,一般可以 logcat 或 xcode 看到相关的crash日志,拿到崩溃时的堆…

Python均匀分布和三角形分布

文章目录均匀分布三角形分布均匀分布和三角形分布之间的关系函数备注triangular(left, mode, right)三角形分布uniform([low, high])均匀分布 均匀分布 所谓均匀分布,就是在事件空间中,所有事件的概率都是相等的连续分布,其概率密度为 f(x)1…

麻省理工人工智能实验室新研究!有远见的机器学习方法:能预知未来行为的AI智能体

原创/文 BFT机器人 近日,麻省理工学院的研究人员开发出一种新技术,让AI智能体能够思考更远的未来,寻找更合适的合作与竞争长期解决方案。 想象一个游戏规则:两支足球队在球场上PK,玩家们可以选择相互合作合作来实现目…

[附源码]Python计算机毕业设计Django学生宿舍管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

c + linux + cmake + arm + MQTT

先给你们看个最终代码结构吧,因为我改过的代码会加密,所以我只能放一部分源码,另外一部分源码我会直接贴在博客,具体使用我会在博客里面说明! 1.MQTTPacket源码库(MQTTPacket源码地址) 2.MQTTClient.c /*********************************************************************…

Linux中线程池的制作

一.介绍 1.1概念 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用&#x…

如何从github上克隆库、跑库

第一步:在Github上找到想要的库,以YOLOv3项目为例。 第二步:拷贝这个库到自己的电脑上,下载到本地。 方法一:在GitHub上,Code -> Download ZIP(有的时候会有一些问题,不建议&…

DBW*的trace文件过大的bug

问题描述: 近期某现场发现trace目录下的dbw*文件达到了大几G的大小导致/oracle目录占用率突增,删除这些trace文件,几天后又重新生成较大的dbw*的trace 11G Dec 4 10:38 rb_dbw0_2086848.trc 3.6G Dec 4 10:38 rb_dbw1_2086852.trc 4.4G De…

前端工程师常考手写面试题指南

实现 add(1)(2)(3) 函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。 1)粗暴版 function add (a) { return function (b) …

码云线上误删主项目文件夹的恢复

码云线上误删主项目文件夹的恢复前言描述解决办法解决问题前言描述 本来某个项目即将上线,然后同事不知道怎么的,直接打开了自己的码云,在网站上把主项目目录删除了。。。。是的,删除了!!!&…

职场生涯亮红灯要注意这些

很多时候,当事业变红的时候,很多年轻人还在傻傻地工作。他们做的事情越多,在不被领导看重的情况下,就越不会得到领导的重用。在关心下属的时候,会在无形中释放出一些不好的信号,这是一种被领导抛弃的行为。…

winform 处理tabcontrol控件,隐藏顶部的tab标签,及tabcontrol的边框线

处理tabcontrol控件,隐藏顶部的tab标签,及tabcontrol的边框线处理tabcontrol控件,隐藏顶部的tab标签,及tabcontrol的边框线隐藏顶部的tab标签隐藏边框线运行效果图处理tabcontrol控件,隐藏顶部的tab标签,及…

智能电销机器人《各版本机器人部署》

科技在进步,时代在发展,越来越多人工智能产品出现在我们的生活中,从各种工业机器人到智能家居产品,人工智能在越来越多的行业出现,代替人们做重复枯燥的工作。在企业中出现最多的是电销机器人,并逐渐被越来…

【面试宝典】Mysql面试题大全

mysql面试题大全1、数据库存储引擎2、InnoDB(B树)3、TokuDB( Fractal Tree-节点带数据)4、MyIASM5、Memory6、InnoDB与MyISAM的区别7、索引8、常见索引原则有9、数据库的三范式是什么10、第一范式(1st NF - 列都是不可再分)11、第二范式(2nd NF- 每个表只描述一件事情)12、第三…