如何使用在线Selenium网格构建谷歌云CI CD管道

181 阅读13分钟

在目前颠覆性的IT环境中,最新版本的部署每分钟都会被推送。同时,开发人员必须确保他们与敏捷方法论和实践保持一致。持续集成和持续部署的作用就在这里,它能够尽快解决集成问题,并帮助打包和向客户提供无风险的版本。

谷歌云平台是公共云市场上领先的云服务提供商之一。根据Statista的数据,截至2021年第四季度,GCP的市场份额为9%。谷歌云CI/CD为持续集成和部署提供各种工具,并与第三方解决方案无缝集成。

Global Cloud Infrastructure 2021

资料来源

谷歌云Build和谷歌云Run是两个谷歌云服务,使用管道来自动构建和部署。Cloud Build是谷歌云的持续集成(CI)和持续交付(CD)平台,在The Forrester Wave的报告中被评为领导者。

在线Selenium Grid有助于加快测试速度。通过提供一个允许在多个浏览器和操作系统上同时运行测试的环境,你可以一次性解决跨浏览器的测试问题,比按顺序进行测试节省时间。基于云的Selenium Grid帮助你更好地专注于编写Selenium测试脚本,而不是担心基础设施的维护。

谷歌云CI CD管道可以与跨浏览器自动化测试平台LambdaTest集成。LambdaTest是一个基于云的跨浏览器测试工具,允许你在3000多个浏览器、操作系统和设备的在线浏览器场上对网络应用进行跨浏览器测试。

因此,通过LambdaTest + Google Cloud CI/CD整合,你还可以对本地或私人托管的项目进行本地测试,并进行并行测试,以缩短测试执行周期,实现更快的上市交付。

想知道如何加快测试和发布速度?现在就试试LambdaTest吧!

在这篇关于谷歌云CI CD管道的文章中,我们将探讨谷歌云平台CI/CD管道、其架构、功能以及它与LambdaTest的集成如何使CI管道更有效率。

那么,让我们开始吧!

Google Cloud CI/CD

来源

谷歌云平台CI/CD

高效的CI/CD策略使公司能够以更短的周转时间进入市场,增加收入并获得市场份额,从而提供更好的价值。CI/CD实践帮助我们在更早的阶段积极主动地解决错误、问题和其他问题。这种做法使整个软件开发成本大大降低。

现在,让我们来探讨一下使用其工具(如谷歌云构建、谷歌容器注册中心和源码库)构建谷歌云CI CD管道的先决条件。

使用LambdaTest进入谷歌云CI,并将所有测试带入云端 现在就试试LambdaTest吧!

云资源库

你可以通过云端源码库来设计、开发和安全地管理你的代码。你可以在一个功能齐全、可扩展的私有Git仓库上顺利地进行协作。你还可以选择通过连接其他谷歌云工具来扩展你的Git工作流程。
Cloud Source Repository

Source

  • 云资源库是托管在谷歌云上的功能齐全的私有 Git 仓库。
  • 云源存储库可用于任何应用或服务的协作、版本控制开发,包括那些在App Engine和Compute Engine上运行的应用。
  • 云源存储库可以连接到现有的GitHub或Bitbucket存储库。连接的存储库会自动与云源存储库同步。
  • 云源存储库会自动将存储库活动的日志发送到云日志,以帮助跟踪和排除数据访问的故障。
  • 云源存储库提供安全密钥检测,以阻止包含敏感信息的git推送交易,这有助于提高源代码的安全性。
  • 它们提供与其他GCP工具的内置集成,如云构建、云调试器、云操作、云记录、云功能等,让你在几分钟内自动构建、测试、部署和调试代码。

云构建

云构建是一项服务,在谷歌云平台的基础设施上执行你的构建。云构建可以从各种存储库或云存储空间导入源代码,根据你指定的规格执行构建,并产生工件,如Docker容器或Java档案。

Cloud Build

源码

  • 一个完全管理的、无服务器的服务,在谷歌云平台的基础设施上执行构建工作。
  • 可以从各种存储库或云存储空间拉取/导入源代码,执行构建以产生容器或工件,并将其推送到工件注册表。
  • 以一系列构建步骤的形式执行构建,每个构建步骤都指定了要执行的操作,并在Docker容器中运行。
  • 构建步骤可以由Cloud Build和Cloud Build社区提供,也可以是自定义的。
  • 构建配置文件包含了云构建根据你的规范执行任务的指令,例如,构建配置文件可以包含构建、打包和推送Docker镜像的指令。
  • 构建可以通过手动或使用构建触发器来启动。
  • 使用构建触发器来实现CI/CD自动化。

容器注册中心

我们经常使用谷歌容器注册中心的简称GCR。谷歌容器注册中心,或称GCR,是谷歌云平台上的一个服务提供商,让我们存储Docker镜像并与团队分享。现在让我们来看看GCR的一些功能。

Features of the GCR

来源

  • Container Registry是一个私有的容器镜像注册中心,支持Docker Image Manifest V2和OCI镜像格式。
  • 容器注册处提供了Artifact注册处功能的一个子集。
  • 它将容器镜像的标签和层文件存储在与注册表相同项目的云存储桶中。
  • 使用云存储的身份和访问管理(IAM)设置来配置对该桶的访问。
  • 与谷歌云服务无缝集成。
  • 与流行的持续集成和持续交付系统一起工作,包括云构建和最佳CI/CD工具,如Jenkins。如果你想创建你的第一个Jenkins管道,请参考Jenkins管道教程并开始使用。

工件注册处

Artifact Registry是您的组织管理容器镜像和语言包(如Maven和npm)的单一场所。它与Google Cloud的工具和运行机制完全集成,并支持天真的工件协议。

Comapare Container & Artifact Registry

来源

  • Artifact Registry是一个完全管理的服务,支持容器镜像和非容器工件,Artifact Registry扩展了容器注册的功能。
  • Artifact Registry是谷歌云上容器镜像存储和管理的推荐服务。
  • Artifact Registry通过Cloud IAM提供了细粒度的访问控制。这使得权限的范围尽可能地细化,例如,在必要时对特定的区域或环境。
  • Artifact Registry支持创建区域存储库。

云部署

谷歌云部署是一项管理服务,它可以自动将你的应用程序按照定义的推广顺序交付给一系列目标环境。Google Cloud Deploy使用Scaffold将渲染工具与交付管道分开。

Google Cloud Deploy

来源

它使清单渲染更加灵活,而不影响你定义交付管道的方式。

谷歌云平台CI/CD架构

Google Cloud Platform CICD Architecture

来源

一般的谷歌云CI CD流水线可能涉及以下步骤。

  • 开发人员将源代码检查到版本控制系统(如GitHub)。
  • GitHub会触发一个提交后的钩子给Cloud Build
  • Cloud Build构建容器镜像并将其推送到容器注册中心
  • 然后,Cloud Build通知Cloud Run进行重新部署。
  • Cloud Run从容器注册中心提取最新的镜像并运行它。

如何使用Cloud Selenium Grid来运行Google Cloud CI CD管道?

使用LambdaTest,你可以在3000多个真实设备和操作系统的在线设备场上大规模地进行手动和自动跨浏览器测试。像LambdaTest这样的自动化测试工具允许你利用基于云的在线Selenium网格的力量,与我们的本地网格设置相结合。

虽然本地Selenium网格是一个良好的开端,但它很难成倍地扩展测试工作。这就是云Selenium网格在收获云和Selenium所提供的好处方面的帮助。像LambdaTest这样的云Selenium网格可以让你通过在安全、可靠和可扩展的云网格上大规模地执行Selenium自动化测试来扩大你的自动化工作。

下面是在LambdaTest平台上执行Selenium自动化测试的一个快速浏览。

如果你是一个Selenium狂热者,你一定使用过Selenium 4。Selenium 4是Selenium WebDriver的最新版本,具有大量的新功能,使Selenium自动化测试比以前的版本更稳定,更不容易出错。然而,如果你很想知道更多关于Selenium 4的新内容,你可以通过Selenium 4教程来了解Selenium 4的功能和改进。

而这还不是全部!用户还可以在LambdaTest模拟器和仿真器以及真实设备云上进行移动应用测试(安卓或iOS),以实现多种配置。

LambdaTest可以作为你的谷歌云CI CD管道的一部分来测试你的应用程序。让我们来探讨更多关于LambdaTest与Google Cloud CI集成的先决条件和分步指南。

一些先决条件!

在将Google Cloud CI与LambdaTest集成之前,请确保你已准备好以下步骤。

  1. 你的LambdaTest账户。
  2. 你的代码库,在GitHub/Bitbucket等。
  3. LambdaTest的用户名和令牌,可在自动化仪表板右上方的 "访问密钥"选项中找到。

Integrating Google Cloud CI with LambdaTest

  1. 最后,登录你的Google Cloud CI CD平台,进入Cloud Build API

Cloud Build API

  1. 点击 "ENABLE",为你的谷歌云平台添加一个计费账户,使CI/CD工具发挥作用。

Enable LambdaTest Google CICD Demo

将你的代码库与谷歌云CI整合起来

为了通过谷歌云CI在LambdaTest上运行测试,我们首先需要连接我们的代码库。在这篇文章中,让我们从GitHub上的这个LambdaTest仓库开始分叉。

现在,让我们打开我们的GCP控制台,并按照下面提到的步骤操作。

  1. 点击右上角的控制台选项。
  2. 创建一个新项目并命名为**"LambdaTest-Google-Cloud-CI-Demo"。**

LambdaTest-Google-Cloud-CI-Demo

  1. 打开仪表板的左窗格,在CI/CD类别下找到**"云构建 "**工具。

Google Cloud Build with LambdaTest

  1. 从下拉选项中点击**"触发器"**。

Triggers Google Cloud with LambdaTest

  1. 现在我们将使用**"CONNECT NEW REPOSITORY "**选项连接我们的代码库。

CONNECTING NEW REPOSITORY

  1. 之后,按照剩下的步骤,很直接地完成整合过程。

Google CiCD with LambdaTest

通过谷歌云CI运行单个Selenium测试

Selenium是一个非常流行的测试框架,使用它可以为自动化UI测试或跨浏览器测试创建可扩展的测试案例。用自动化平台构建和执行Selenium项目是以更快的速度测试网站(或网络应用程序)的一种强大方式。通过使用Selenium测试工具,你可以更快、更频繁、更准确地测试。

在本文关于Google Cloud CI CD管道的这一部分,我们将尝试通过Google Cloud CI运行我们的Selenium测试,而不需要任何集群或Docker配置。我们只需要正确的云构建配置文件来进行这个案例。由于我们已经连接到存储库,其中包含一些TestNG-Selenium测试样本,现在我们将通过Google Cloud Build运行它们。

  1. 点击 "创建触发器"选项,并为其提供一个名称。

‘Create Trigger’

  1. 选择测试代码库和它的分支。

Select the testing code repository and its branch.

  1. 在 "配置"选项下,选择云构建配置文件(yaml或json)

‘Configuration'

  1. 在 "高级"类别中,选择ADD VARIABLE选项。输入你的LambdaTest访问令牌细节,如下图所示。

ADD VARIABLE

  1. 点击 "创建"选项,我们的触发器项目将在选定的谷歌云CI GitHub仓库中创建。

‘Create’

  1. 要通过Google Cloud CI运行TestNG Selenium GitHub样本库中的单个测试,点击 "RUN",如下图所示。

RUN

  1. Google Cloud CI控制台显示已经触发的新构建。该构建的当前状态将是 "运行 "或 "成功"。

Running’ or ‘Successful

  1. 测试执行的详细情况也可以在LambdaTest自动化仪表板上找到。

LambdaTest Automation Dashboard

通过谷歌云CI运行并行测试

平行测试是一个在不同环境中同时运行相同测试的过程。这个过程的目标是解决时间和预算的限制,同时仍然保证质量。

为了通过Google Cloud CI在LambdaTest云上运行并行测试,我们需要在cloudbuild.yml文件中进行小的调整。

在YAML文件的args中添加以下命令mvn test -P parallel,以允许并行测试。

文件名:cloudbuild.yaml

steps:
- name: gcr.io/cloud-builders/docker
  args: ['run' , '-d', '--name=lt', '--network=cloudbuild', 'lambdatest/tunnel', '--user', '${_LT_USERNAME}', '--key', '${_LT_ACCESS_KEY}', '--tunnelName', 'GCloud', '--infoAPIPort', '15000','--load-balanced']
- name: curlimages/curl
  args: ['-s', '--retry-connrefused', '--connect-timeout', '5', '--max-time', '5', '--retry', '30', '--retry-delay', '2', '--retry-max-time', '60', 'http://lt:15000/api/v1.0/info']
- name: 'ubuntu'
  args: ['sleep', '20']
- name: 'bash'
  args: ['ls']
- name: 'maven'
  entrypoint: 'mvn'
  args: ['test', '-P', 'local', 'mvn test -P parallel']
  env:
  - 'LT_USERNAME=${_LT_USERNAME}'
  - 'LT_ACCESS_KEY=${_LT_ACCESS_KEY}'

重新构建并再次从Google Cloud Build仪表板上触发项目,以并行方式执行测试。

Google Cloud Build dashboard

通过谷歌云CI运行本地测试

当你在旅途中构建和测试时,本地测试是一个完美的时间节省者。在开发过程中,你可以在部署之前在本地运行和测试你的容器镜像。你可以使用安装在本地的Cloud Code或Docker来运行和测试,包括在本地运行时访问谷歌云服务。

然而,LambdaTest允许你通过谷歌云CI运行你的本地测试,只需借助于一个配置文件

你可以在LambdaTest Selenium测试自动化平台使用LambdaTest隧道应用程序测试你的本地托管页面和私人托管页面。有趣的是,你也可以通过谷歌云CI运行这种并行测试。

为了通过谷歌云CI在LambdaTest云上运行你的本地测试,我们需要在cloudbuild.yml文件中进行小的调整。

在YAML文件的args中添加以下命令mvn test -P local,以允许本地测试。

文件名:cloudbuild.yaml

steps:
- name: gcr.io/cloud-builders/docker
  args: ['run' , '-d', '--name=lt', '--network=cloudbuild', 'lambdatest/tunnel', '--user', '${_LT_USERNAME}', '--key', '${_LT_ACCESS_KEY}', '--tunnelName', 'GCloud', '--infoAPIPort', '15000','--load-balanced']
- name: curlimages/curl
  args: ['-s', '--retry-connrefused', '--connect-timeout', '5', '--max-time', '5', '--retry', '30', '--retry-delay', '2', '--retry-max-time', '60', 'http://lt:15000/api/v1.0/info']
- name: 'ubuntu'
  args: ['sleep', '20']
- name: 'bash'
  args: ['ls']
- name: 'maven'
  entrypoint: 'mvn'
  args: ['test', '-P', 'local', 'mvn test -P local']
  env:
  - 'LT_USERNAME=${_LT_USERNAME}'
  - 'LT_ACCESS_KEY=${_LT_ACCESS_KEY}'

下面的快照显示了正在执行的本地测试。

shows the local tests

总结

在这篇关于构建Google Cloud CI CD管道的文章中,我们已经详细了解了Google Cloud CI CD平台、其工具和架构。我们还学习了通过谷歌云CI在LambdaTest平台上运行Selenium测试的实践性、逐步性指南。无论是并行测试还是运行你的本地测试,LambdaTest都让你通过谷歌云运行你的流程变得超级简单

我希望你觉得这篇文章有用。请在评论区分享您的反馈。

常见问题(FAQ)

谷歌是否使用CI CD?

是的。Google Cloud Build是一个完全管理的CI/CD平台,可以让你快速、大规模地构建、测试和部署软件。

什么是CI CD谷歌云?

云构建是一个持续集成和持续交付的平台。它允许你在混合和多云环境中构建、测试和部署应用程序。

什么是GCP数据流?

谷歌云数据流是一种基于云的数据处理服务,它通过为开发者提供工具来设置处理管道,以整合、准备和分析大型数据集,例如在网络分析或大数据分析应用中发现的数据集。