文章目录

  • 1. Jenkins & Gitee持续集成流程
  • 2. Jenkins安装Gitee插件
  • 3. 插件配置
  • 4. 安装NodeJS
  • 5. 新建构建任务
    • 5.1 General
    • 5.2 源码管理
    • 5.3 触发器配置
    • 5.4 构建环境
    • 5.5 构建脚本
  • 6. Vue项目部署

前面介绍了一些CI/CD 持续集成的工具,如circle citravis cigitee go等,详情可以看下系列文章:传送门。

但是上面一些工具有的是只支持Github,有的需要收费,有的免费的只支持公开项目不支持私有项目,而且Github在国内访问又比较慢,所以这次介绍下Gitee + Jenkins来实现可私有化且免费的持续集成方案。

1. Jenkins & Gitee持续集成流程

  • 在本地编辑器编辑代码,提交到gitee
  • push操作触发jenkins自动部署(jenkins安装在docker中)
  • jenkins开始构建、打包、最后部署到云服务器

2. Jenkins安装Gitee插件

Jenkins安装Gitee插件:

安装完记得重启Jenkins

3. 插件配置

  1. 前往 Jenkins -> 系统管理 -> 系统配置 -> Gitee配置 -> Gitee 链接

  2. 链接名 中输入 Gitee 或者你想要的名字

  3. Gitee 域名 URL 中输入Gitee完整 URL地址: https://gitee.com (Gitee私有化客户输入部署的域名)

  4. 证书令牌 中如还未配置Gitee APIV5 私人令牌,点击添加 -> Jenkins

    • Domain 选择 全局凭据
    • 类型选择 Gitee API 令牌
    • 范围 选择你需要的范围;
    • Gitee APIV5 私人令牌 输入你的Gitee私人令牌,点击获取
    • ID, 描述 中输入你想要的 ID 和描述即可。


    添加完成后,选择这个证书令牌:

    点击【测试连接】,若出现成功不报错则表示配置成功。

4. 安装NodeJS

因为Vue项目是基于node 来打包构建的,所以要先安装nodejs插件:

在系统管理 > 系统配置 > 全局工具配置 NodeJS安装:

建议Node版本不要太高,选择LTS 最新的版本即可。

5. 新建构建任务

前往 Jenkins -> 新建任务 , 输入任务名称 Gitee Test,选择构建一个自由风格的软件项目保存即可创建构建项目。

5.1 General

任务全局配置中需要选择前一步中的Gitee链接。前往某个任务(如’Gitee Test’)的 Configure -> General,Gitee 链接 中选择前面所配置的Gitee链接,如图:

5.2 源码管理

  • 选择 Git选项,输入你的仓库地址
  • 凭据Credentials中请输入 git 仓库https 地址对应的 用户名密码凭据,或者 ssh 对应的 ssh key 凭据,注意 Gitee API Token 凭据不可用于源码管理的凭据,只用于gitee插件的 API 调用凭据(这里再添加一个用户名密码的凭据就行啦)。
  • 点击【高级】 Advanced 按钮, Name 字段中输入 originRefspec 字段输入 +refs/heads/*:refs/remotes/origin/* +refs/pull/*/MERGE:refs/pull/*/MERGE
    ,注意新版jenkins不再接受多条同时包含*通配符的refs描述,如只对push触发可写前半部分,如只对PR触发可只写后半段。(这里我就先写前半部分)
  • 指定分支:master

5.3 触发器配置

这里我是配置push代码立即触发构建任务:

  1. 勾选Gitee webhook 触发构建,后面有个地址这个后面需要配置到Gitee,Gitee触发构建策略勾选推送代码,其他先默认就行,后面有个Gitee WebHook密码栏位需要配置到Gitee,点击生成就会生成一个密码;
  2. 打开Gitee这个项目的管理,左侧有个WebHooks ,点击【添加webHook】:

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

5.4 构建环境

修改构建任务的构建环境,勾选Provide Node & npm bin/ folder to PATH,默认会选择刚才选择的nodeJS:

5.5 构建脚本

选择【执行shell】:

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

保存后,我们提交一次看看,很快就构建成功了:

6. Vue项目部署

vue项目通过node 构建后,需要将构建后的dist文件夹的内容部署到云服务器,因为jenkinsdocker容器创建的,容器内部不能直接移动文件,因为没有挂载,所以这里可以使用SSH登录的方式登录到远程主机再来使用docker命令来移动容器的文件到宿主机的nginx服务器。先来安装下Publish over SSH,进入插件管理:

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

先在宿主机生成SSH key(若已经有了SSH Key可以直接使用):

ssh-keygen -t rsa -C "xxxx@qq.com"

# 将公钥放到authorized_keys,否则SSH Server配置会不成功
cat id_rsa.pub >> authorized_keys

在系统管理 > 系统配置 中配置 Publish over SSH , 配置Jenkins SSH Key:

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

Jenkins 会通过 Git 下载项目,会下载到/var/jenkins_home/workspace/目录,Jenkins 镜像通过 ssh 登陆到宿主机时,可以直接访问到镜像中的该目录,所以能在宿主机执行该命令。

其他步骤同上,构建步骤修改脚本:

先添加一个Transfer Set 删除部署目录的文件:

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

部署效果:

注意点:

1.若jenkins不是用docker容器安装的,可以直接用cp命令复制将jenkins打包的文件复制到nginx对应的目录,不用SSH 来传输文件。

2.node版本记得改成和本地相同的,曾经在安装vue-element-admin时遇到install失败的问题就是node版本太高了。

3.vue-element-admin 我去除了tui-editor,因为从git下载总是报错(可以通过加hosts来解决)

Jenkins Gitee 实现持续集成CI/CD工具【免费、推荐】相关推荐

  1. 持续集成 ci/cd_CI / CD即服务:在云中进行持续集成和交付的10种工具

    持续集成 ci/cd 云和持续集成 (CI)是天生的匹配. 尽管云使我们摆脱了安装和维护物理服务器的痛苦,但持续集成可以自动消除构建,测试和部署代码的痛苦. 如果两家公司都希望把工作从开发团队的肩膀上 ...

  2. 持续集成(CI)工具-----jenkins

    1.jenkins 1.1. 什么是jenkins Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续.自动的构建/测试软件项 ...

  3. 持续集成与持续部署(三)——实现持续集成的效率工具对比之Jenkins、Travis CI、Circle CI和其他持续集成工具

    持续集成与持续部署(三)--实现持续集成的效率工具对比之Jenkins.Travis CI.Circle CI和其他持续集成工具 效率工具对比 点击查看效率工具 1. Jenkins Jenkins, ...

  4. 推荐10个CI/CD工具,用于云平台集成交付

    虽然云平台的到来让开发者免于安装和维护物理服务器,但测试和部署代码过程依旧需要人为完成,持续集成可以自动消除构建.测试和部署代码的大部分痛苦.如果希望最大限度提高效率,持续集成和交付工具是最好的选择. ...

  5. 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

    前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...

  6. Jenkins和GitLab CI/CD:CI/CD工具之战

    持续集成(CI)和持续交付(CD)在过去十年左右时间里取得了长足的进步.DevOps测试的兴起引发了针对CI/CD工具的强烈需求.现有的解决方案一直在与时俱进,无数的新产品或新版本正在进入质量检查领域 ...

  7. centos7下Gitlab+Jenkins部署持续集成CI环境

    1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65: 内存推荐到8G,实测需要6G以上,以免出现内存不够用而报错. 2.安装git ...

  8. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  9. ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势

    原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...

最新文章

  1. 导航,头部,CSS基础
  2. word vba高效排版范例应用_Word 排版指北丨高效律师
  3. opnet中的例子模型
  4. group by很多字段是不是会很慢_面试官:数据量很大,分页查询很慢,有什么优化方案?...
  5. JS性能优化之文档碎片-document.createDocumentFragment
  6. Spring Boot(3)---Spring Boot入门:系统要求
  7. 【java】Java实现单向链表反转
  8. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_5_线程间通信...
  9. spring cloud SnakeYAML RCE
  10. dbutils mysql_mysql dbutils
  11. ios10 申请拍照权限_iOS 10 获取相册相机权限
  12. 各省市大学 全国各个省市重点民办本专科大学
  13. Java 标准 I/O 流编程一览笔录
  14. php doctrine 使用,php – 在Symfony中使用Doctrine创建表
  15. 信息安全技术 应用软件安全编程指南
  16. 被迫毕业,面试 30 家公司,终于上岸了!
  17. 《图说VR入门》——googleVR 他山之玉
  18. python处理颜色rgb_python – 根据RGB值更改图像的颜色
  19. 小学计算机画线反思,会画画的线活动反思
  20. XMOS笔记1--LED的控制

热门文章

  1. 知方可补不足~sqlserver中使用ROW_NUMBER进行的快速分页
  2. Ubuntu 14 开启SSH服务与使用root账号登陆
  3. Nginx记录客户端POST过来的具体信息
  4. Ubuntu 下修改 Could not reliably determine the serve
  5. POJ3485 区间问题
  6. 打印机共享无法正常打印的处理思路
  7. ckeditor与ckfinder的使用方法 .NET (转载)
  8. 页面滚动效果库,有点儿皮!
  9. 阿里程序员受邀去华为面试,却因这点没被录取。
  10. 盘点填报功能的9大应用场景,解决填报难题(附模板)