百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

用一个简单的例子教你如何使用持续集成Travis CI平台

liuian 2025-01-03 17:18 100 浏览

这篇文章和大家聊一聊一个持续集成平台——Travis Ci。

什么是持续集成

当开发一个代码库,我们的工作不仅仅只是写源代码,还需要做很多工程化的建设,比如构建、单元测试、发布等等。每当你发布代码的时候都需要手动执行这些操作,那有没有一个自动化的工具帮我们完成这些工作呢?答案是必须的必啊!

Travis Ci就是一个这样的工具平台,它提倡高频小份提交代码,而不是等到项目开发完一次性提交一大坨代码,这种提交方式对排查错误很有帮助。

开发一个持续集成平台工具并不是很难,你甚至只做一个cli就可以做到持续集成的效果。目前大公司都有自己内部的通用持续集成平台,但也仅限于公司内部使用,Travis Ci作为一款开源免费优秀的持续集成工具可以帮助你做很多开源代码的建设工作。

Builds、Stages、Jobs和Phases名词解释

(1)install、test、deploy等操作被称为phase,翻译过来就是阶段;

(2)将你的代码copy到一个虚拟环境,然后运行编译、测试等操作,这一系列流程称为一个job,如果其中一个阶段运行结果返回非0,整个job就会失败;

(3)按顺序运行的一组job被称为build;

(4)一组平行运行的job被称为stage,一个build也可以由多个stage组成。

咱看图说话,更容易理解,

使用Travis Ci的先决条件

(1)拥有Github或者Bitbucket账号;

(2)拥有代码仓库的所有权,就是所谓的owner。

使用Travis Ci步骤

(1)用github账号登录Travis Ci平台Travis-ci.com;

(2)登录之后,点击右上角头像,再点击设置和绿色的激活按钮,然后选择你想要使用Travis Ci的仓库(也可以选择你所拥有的所有的仓库);

(3)向仓库添加一个.travis.yml文件告诉Travis Ci你想要它做什么;在你增加.travis.yml文件后你每次提交都会触发Travis Ci运行;

(4)你可以去Travis Ci平台的构建页面查看构建过程和结果。

开发.travis.yml文件

如图3,咱们先写一个简单的yml文件,此文件采用YAML格式。

(1)第一行就是让我们选择一个运行的语言,Travis Ci平台支持几十种语言,咱们是做前端的,当然首选nodejs;

(2)第二行node_js是让我们选择node的版本,node代表nodejs的稳定版本,还有其他版本的写法,咱们后面再说;

(3)install就是安装阶段,图3中咱们只运行一个安装依赖的命令;

(4)script就是运行脚本,图中写了两个命令;

图4所示是在代码仓库的package.json中设置的两个命令,一个打印build字符串,另外一个打印test字符串。现在我们把这个文件推到远程仓库,看看能不能触发Travis运行并且运行结果是否能符合预期?

如图5所示是Travis运行的日志输出,从图中可以看出它是先把咱的代码下载到它的环境,紧接着用nvm开始安装最新版本的node,安装完了还检查了一下node版本,后面就开始安装依赖和执行脚本。test和build两个字符串也都打印了出来,而且最后一句说到构建的退出码是0,说明咱们整个构建是成功的,binggo!

以后再向代码push代码,都会走一遍这样的流程。

build passing徽章

在构建页面上面有个徽章,点击它就会弹出了一个弹框,format下拉框选择makedown,然后把result的文本复制到代码仓库的README里面,这样你的仓库也会多一个这样的徽章,看起来就显的很专业。

总结

这篇主要是带大家学习如何使用持续集成Travis Ci平台,后面写了一个简单的例子走了一遍流程,整体还是非常简单的。其中最重要的还是如何去配置.travis.yml文件,后面我们会继续聊。

喜欢我的文章就关注我吧,有问题可以发表评论,我们一起学习,共同成长!

#JavaScript WEB前端开发##JavaScript#

相关推荐

Python 中 必须掌握的 20 个核心函数——items()函数

items()是Python字典对象的方法,用于返回字典中所有键值对的视图对象。它提供了对字典完整内容的高效访问和操作。一、items()的基本用法1.1方法签名dict.items()返回:字典键...

Python字典:键值对的艺术_python字典的用法

字典(dict)是Python的核心数据结构之一,与列表同属可变序列,但采用完全不同的存储方式:定义方式:使用花括号{}(列表使用方括号[])存储结构:以键值对(key-valuepair)...

python字典中如何添加键值对_python怎么往字典里添加键

添加键值对首先定义一个空字典1>>>dic={}直接对字典中不存在的key进行赋值来添加123>>>dic['name']='zhangsan'>>...

Spring Boot @ConfigurationProperties 详解与 Nacos 配置中心集成

本文将深入探讨SpringBoot中@ConfigurationProperties的详细用法,包括其语法细节、类型转换、复合类型处理、数据校验,以及与Nacos配置中心的集成方式。通过...

Dubbo概述_dubbo工作原理和机制

什么是RPCRPC是RemoteProcedureCall的缩写翻译为:远程过程调用目标是为了实现两台(多台)计算机\服务器,互相调用方法\通信的解决方案RPC的概念主要定义了两部分内容序列化协...

再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配

在微服务项目中,如果我们想实现服务间调用,一般会选择Feign。之前介绍过一款HTTP客户端工具Retrofit,配合SpringBoot非常好用!其实Retrofit不仅支持普通的HTTP调用,还能...

SpringGateway 网关_spring 网关的作用

奈非框架简介早期(2020年前)奈非提供的微服务组件和框架受到了很多开发者的欢迎这些框架和SpringCloudAlibaba的对应关系我们要知道Nacos对应Eureka都是注册中心Dubbo...

Sentinel 限流详解-Sentinel与OpenFeign服务熔断那些事

SentinelResource我们使用到过这个注解,我们需要了解的是其中两个属性:value:资源名称,必填且唯一。@SentinelResource(value="test/get&#...

超详细MPLS学习指南 手把手带你实现IP与二层网络的无缝融合

大家晚上好,我是小老虎,今天的文章有点长,但是都是干货,耐心看下去,不会让你失望的哦!随着ASIC技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势...

Cisco 尝试配置MPLS-V.P.N从开始到放弃

本人第一次接触这个协议,所以打算分两篇进行学习和记录,本文枯燥预警,配置命令在下一篇全为定义,其也是算我毕业设计的一个小挑战。新概念重点备注为什么选择该协议IPSecVPN都属于传统VPN传统VP...

MFC -- 网络通信编程_mfc编程教程

要买东西的时候,店家常常说,你要是真心买的,还能给你便宜,你看真心就是不怎么值钱。。。----网易云热评一、创建服务端1、新建一个控制台应用程序,添加源文件server2、添加代码框架#includ...

35W快充?2TB存储?iPhone14爆料汇总,不要再漫天吹15了

iPhone14都还没发布,关于iPhone15的消息却已经漫天飞,故加紧整理了关于iPhone14目前已爆出的消息。本文将从机型、刘海、屏幕、存储、芯片、拍照、信号、机身材质、充电口、快充、配色、价...

SpringCloud Alibaba(四) - Nacos 配置中心

1、环境搭建1.1依赖<!--nacos注册中心注解@EnableDiscoveryClient--><dependency><groupI...

Nacos注册中心最全详解(图文全面总结)

Nacos注册中心是微服务的核心组件,也是大厂经常考察的内容,下面我就重点来详解Nacos注册中心@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。微服务注册中...

网络技术领域端口号备忘录,受益匪浅 !

你好,这里是网络技术联盟站,我是瑞哥。网络端口是计算机网络中用于区分不同应用程序和服务的标识符。每个端口号都是一个16位的数字,范围从0到65535。网络端口的主要功能是帮助网络设备(如计算机和服务器...