如果交付是软件开发的终极目标,那么CI/CD 管道就是为了达到这一目标而进行的一系列步骤。持续集成/持续交付(CI/CD)是一套软件交付的优秀实践,它专注于使用 DevOps 或站点可靠性工程(SRE)方法对软件交付进行改进。
译者 | 崔皓
审校 | 梁策 孙淑娟
开篇
如果交付是软件开发的终极目标,那么CI/CD 管道就是为了达到这一目标而进行的一系列步骤。持续集成/持续交付(CI/CD)是一套软件交付的优秀实践,它专注于使用 DevOps 或站点可靠性工程(SRE)方法对软件交付进行改进。
就CI/CD而言,持续集成(CI :Continuous Integration)是开发过程中的优秀实践之一,它可以将代码不断集成到代码库中,而无需要等待大版本的提交。CI需要保证不会破坏现有代码,同时不会对代码存储库产生重大影响。为了达到这个目的,并展示CI和测试的工作方式,本文将利用最常见的CI服务:Travis CI管道来说明。
Travis CI 管道将在很多方面为用户提供帮助,包括报告自动构建更改、测试集成和应用部署管理。同时它还可以帮助代码库提高软件质量、降低风险并增强协作能力。
本文将带大家了解 Travis CI及其使用优势,并阐释如何利用在线的 Selenium Grid 对Travis CI 管道中的自动化测试库进行配置。
Travis CI 简介
Travis CI 是一种基于云的 CI 服务,可以用来构建和测试托管在 GitHub 上的软件项目。它可以用来触发构建过程,对其进行验证,并在出现失败时报告原因。它需要从一个.travis.yml文件中获取执行命令并开始构建过程,该文件位于项目的根文件夹中,并基于 YAML 的文件格式。Travis CI能通过Travis YML 文件了解构建应用的编程语言、分支规范、安装依赖项等信息。
一般而言,代码存储库都有对应的持续集成工具,例如Bitbucket 就是 Atlassian 的代码库,Bamboo 就是与Bitbucket对应的持续集成工具。 GitLab代码库和GitLab CI持续集成工具也是一对固定组合。这说明,由于代码库不同,持续集成工具的选择也会随之发生变化。
对于 Travis CI而言需要满足下面两个条件才能使用,以下是开始使用的一些先决条件:
一个GitHub帐户
将 GitHub代码库与 Travis CI 进行集成的授权。
为什么选择Travis CI?
Travis CI与 GitHub 无缝集成,且易于设置。用户需要在 GitHub 上注册并授权同步GitHub 项目,本文在配置部分会进行详细介绍。
丰富的Travis CI 文档可供入门使用,文档包含:安装依赖项、不同编程语言的配置项以及加密和集成主题相关内容。
支持几乎所有编程语言和云解决方案的部署。
与跨浏览器测试解决方案无缝集成,例如用于并行测试的 LambdaTest。
跨平台支持,支持Windows、Mac、Linux等多个平台。基础设施依赖项会因使用的环境而异,这部分在文档中有详细说明。
对于开源项目免费,这里的开源项目就是在GitHub 上公开的项目。对于私有代码库,有企业版提供。
一旦代码库用户需求配置发生更改,自动构建将会触发。用户可选择项目根目录中的 Travis.yml 文件指定的分支名称。
Travis CI 的小缺陷
由于集成受限于GitHub,GitLab、Bitbucket和Assembla,云存储库在GitHub之外使用 Travis CI 不如使用 GitHub那般用户友好。
私有代码仓库只有Travis CI的企业版(付费)支持,不过试用版有100个免费构建的机会。
使用 Travis CI 构建CI/CD 管道
任何公共代码库都可用于创建免费管道,配置 Travis CI 管道步骤如下:
第 1 步:使用有效的用户名和密码登录到 GitHub 帐户。选择您计划与 Travis CI 管道集成的代码库,确保代码库是最新版本。
第 2 步:登录Travis CI,使用上面使用的 GitHub 帐户注册。
第 3 步:参考下图,根据要求提供授权。
第 4 步:完成注册和授权过程后,您将被重定向到仪表盘,系统会提示您在屏幕左侧输入同步帐户选项。正常的话,GitHub 项目将与 Travis CI 管道同步。
第 5 步:在过往服务集成( Legacy Service Integrations )下,您可以查看在 Travis CI 管道上同步的所有代码库。
默认情况下,所有代码库的 CI 进程都为关闭状态,可以通过切换按钮打开特定项目的集成。
第 6 步:将.travis.yml文件添加到当前自动化测试套件的根目录中。
Travis YML 是放置在项目根目录中的配置文件,用于定义构建应用的配置信息。
如果 .travis.yml 文件不在代码库中或不是有效的 YAML文件,Travis CI 管道会将之忽略。Travis.yml文件包含编程语言、操作系统、目标代码库的分支名称等信息。
一旦.travis.yml文件被创建并推送到 GitHub 代码库,将会触发 Travis CI对应用的构建。如下图所示,成功依照配置文件信息的完成集成操作后,Travis CI 管道将完成GitHub 代码的编译。其具体执行过程分为两步:Travis CI 首先会从代码库拉取代码,然后对指定的分支代码进行编译。
活动存储库视图:
构建完成后的 JobView:
作业日志示例:
使用配置信息查看 Config:
第 7 步:复制(fork)GitHub代码库,并将GitHub代码库与Travis CI 管道进行同步。
如果不想 fork 上述代码库,请确保选择一个代码库,并确保该代码库在GitHub 帐户中不为空。
第 8 步:启用同步代码库。启用之后,所同步的代码库会在我的代码库(Mymy Repositories)页面上可见。
第 9 步:使用以下构建配置将.travis.yml文件添加到代码库 以进行编译。
language: javasudo: falsescript: "mvn test"1.2.3.
确保启用您的框架,以便通过配置文件中指定的 maven 命令 - “mvn test”触发测试。
第 10 步:将上述配置文件提交并推送到 GitHub 的主分支后。在作业日志视图中可以观察到自动触发的测试信息。该过程会触发第一次编译,即通过将 GitHub 帐户中的代码拉入 Travis CI 管道创建的VM。
如果通过 RemoteWebDriver 类将测试配置为在 LambdaTest 平台,此时一旦完成新的提交,就会触发在 LambdaTest 平台上的测试套件。
Travis CI 管道集成 LambdaTest自动化测试
LambdaTest 是一个基于云的跨浏览器测试解决方案,能够对 2000 多个浏览器和操作系统执行自动化测试。根据测试要求配置可自由伸缩的测试资源,避免开发者考虑资源分配和回收问题。同时可以协助估算并行测试以及跨浏览器测试所需的资源。
测试本地项目或私人托管项目
全球企业将私有服务器用于IT 项目,以实现更好的Web 应用安全性。LambdaTest 将借助名为LambdaTest Tunnel的安全外壳功能与此类平台(私有服务器项目)无缝集成。从而让您能够测试本地托管的网页。下面让我们看看如何配置 LambdaTest Tunnel。
第 1 步:登录LambdaTest 平台后,导航到如下图所示的Automation Dashboard。
第 2 步:单击Configure Tunnel(配置隧道)功能后,系统会提示您覆盖两个部分,即内部服务器配置和本地托管的网页测试功能。
第 3 步:复制与被测应用程序所需功能相关的访问令牌。以下令牌仅供参考。
LT -user lambdatest@sampleemail.com -key qYlLn1IzVrC2U41zM4kyjv35EvpHxR2tyMB4aEBlkNMmvpnQ5A1.
接下来我们会使用此令牌,以演示使用 LambdaTest 进行并行测试。
使用 LambdaTest Selenium Grid 进行并行测试
接下来将会看到如何使用自动测试管道(如 Travis CI 管道)中的在线 Selenium Grid 工具执行并行测试。这里会使用Cucumber TestNG 代码库作为参考。您需要克隆代码,然后将代码导入对应的 IDE 中。
同时需要在 .yml 文件中配置 LambdaTest 用户名和密码,如下:
env: global: - LT_USERNAME=${LAMBDATEST_USERNAME}1.2.3.4.
其中 LambdaTest 用户名的全局变量是 LT_USERNAME,LambdaTest 密码是 LT_ACCESS_KEY。可以从Profile Section中检索到相同的内容。
.travis.yml配置信息如下:
language: javasudo: falsescript: "mvn test"env: global: - LT_USERNAME=${LAMBDATEST_USERNAME} - LT_ACCESS_KEY=${LAMBDATEST_KEY}1.2.3.4.5.6.7.
可以通过触发远程 Web 驱动程序的方式使用配置好的信息,如下图所示,这里为Cucumber+TestNG 代码示例。
在 Travis CI 自动化测试管道的帮助下,用上面的代码替换 TestNG Runner 文件从而完成对LambdaTest 的集成,这将帮助你在 LambdaTest 平台中获得测试执行的触发器,如下图所示:
结论
本文讨论了持续集成的重要性、如何使用 Travis CI 管道,以及它的优缺点。Travis CI 可以与云解决方案(自动化测试管道的 LambdaTest)集成完成并行、跨浏览器测试。同时,Travis CI还可以通过配置相关信息与Cucumber、TestNG合作完成在 LambdaTest 上的跨浏览器测试。
需要注意的是,如果需要启动部署,首先要进行质量检查以验证构建。但是,不能完全依赖手动测试来确保每个构建集成,依赖人工的方式不仅让人厌烦,而且会提高失败的可能性。为了避免这种情况的发生,需要引入自动化测试套件,在 Travis CI 管道的帮助下,通过持续部署流程充当持续集成中的检查点,让我们轻松完成构建、编译、发布、自动测试一系列操作。
原文标题:How to Build Your First CI/CD Pipeline With Travis CI,作者:Bharadwaj Pendyala