如何使用 Travis CI 构建 CI/CD 管道

译文
开发 前端
如果交付是软件开发的终极目标,那么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?

  1. Travis CI与 GitHub 无缝集成,且易于设置。用户需要在 GitHub 上注册并授权同步GitHub 项目,本文在配置部分会进行详细介绍。
  2. 丰富的Travis CI 文档可供入门使用,文档包含:安装依赖项、不同编程语言的配置项以及加密和集成主题相关内容。
  3. 支持几乎所有编程语言和云解决方案的部署。
  4. 与跨浏览器测试解决方案无缝集成,例如用于并行测试的 LambdaTest。
  5. 跨平台支持,支持Windows、Mac、Linux等多个平台。基础设施依赖项会因使用的环境而异,这部分在文档中有详细说明。
  6. 对于开源项目免费,这里的开源项目就是在GitHub 上公开的项目。对于私有代码库,有企业版提供。
  7. 一旦代码库用户需求配置发生更改,自动构建将会触发。用户可选择项目根目录中的 Travis.yml 文件指定的分支名称。

Travis CI 的小缺陷

  1. 由于集成受限于GitHub,GitLab、Bitbucket和Assembla,云存储库在GitHub之外使用 Travis CI 不如使用 GitHub那般用户友好。
  2. 私有代码仓库只有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: java
sudo: false
script: "mvn test"

确保启用您的框架,以便通过配置文件中指定的 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 qYlLn1IzVrC2U41zM4kyjv35EvpHxR2tyMB4aEBlkNMmvpnQ5A

接下来我们会使用此令牌,以演示使用 LambdaTest 进行并行测试。

使用 LambdaTest Selenium Grid 进行并行测试

接下来将会看到如何使用自动测试管道(如 Travis CI 管道)中的在线 Selenium Grid 工具执行并行测试。这里会使用Cucumber TestNG 代码库作为参考。您需要克隆代码,然后将代码导入对应的 IDE 中。

同时需要在 .yml 文件中配置 LambdaTest 用户名和密码,如下:

env:
global:

- LT_USERNAME=${LAMBDATEST_USERNAME}

其中 LambdaTest 用户名的全局变量是 LT_USERNAME,LambdaTest 密码是 LT_ACCESS_KEY。可以从Profile Section中检索到相同的内容。

.travis.yml配置信息如下:

language: java
sudo: false
script: "mvn test"
env:
global:
- LT_USERNAME=${LAMBDATEST_USERNAME}
    - LT_ACCESS_KEY=${LAMBDATEST_KEY}

可以通过触发远程 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


责任编辑:华轩 来源: 51CTO
相关推荐

2023-02-19 15:28:39

CI/CD 管道集成开发

2021-08-31 09:00:00

开发Azure DevOp集成

2018-08-24 09:00:00

DevOps持续集成连续部署

2020-12-15 16:13:21

DevSecOpsCICD

2023-01-30 15:55:08

2023-04-18 08:17:11

GitLab持续集成

2023-05-04 16:03:50

KubernetesCI/CD集成

2021-07-02 16:30:01

CICDDevOps

2022-05-19 09:00:00

安全CI/CD工具

2023-05-24 16:20:39

DevOpsCI/CD 管道软件开发

2021-01-18 09:35:17

Travis-CGithub ActiLinux

2020-10-21 14:10:28

工具测试开发

2019-07-25 10:31:55

AWSDevOps架构

2020-06-05 07:20:41

测试自动化环境

2021-01-21 06:06:30

Jenkins分支管道CI

2021-03-31 09:00:00

管道集成工具

2013-12-06 09:37:49

分布式系统Travis CI

2021-05-13 18:23:53

Tekton云原生Kubernetes

2021-09-26 09:26:46

开发安全CICD管道

2023-05-09 16:20:54

蓝绿部署CI/CD 管道自动化部署
点赞
收藏

51CTO技术栈公众号