Orb测试方法

该指南涵盖了测试宝珠各种最佳实践。

介绍

orb是开放源码的,因此,与所有软件一样,为orb设置一个可靠的测试管道非常重要。因为orb是在YAML中创建的,所以要有效地测试它们似乎很困难。使用orb开发工具包,可以为您的orb实现全面的健壮测试。

验证

orb最基本的测试形式是配置验证和代码linting。打包和发布orb时,它必须是有效的YAML和有效的CircleCI语法。当使用orb开发工具包时,通过项目配置文件中设置的CI/CD管道自动应用这两种检查.circleci / config.yml。配置验证和代码链接也可以在本地手动执行。

来自测试包工作流的#片段测试包除非< < pipeline.parameters.run-integration-tests > >职位-orb-tools /线头# Lint Yaml文件-球型工具/包#打包orb源+验证配置-shellcheck /检查DIR./src/scripts排除SC2148

当你第一次做一个承诺,你的ORB库中,测试包工作流被触发,它包含几个与验证和测试orb相关的作业。

了解更多关于什么是包含在ORB项目配置文件宝珠发布流程指南。

YAML林特

工作流中列出的第一个作业,orb-tools /线头,来自orb-toolsorb,这是ORB开发工具包的主要组成部分。该orb-tools /线头工作是负责基础YAML掉毛。您可以修改通过掉毛规则或其他设置作业的参数,这些都对球体注册表中列出

配置验证

测试包工作流将运行球型工具/包作业,与您的YAML linting作业并行(orb-tools /线头),自动包装和验证配置。

单数orb.yml文件(填充ORB)可经由CircleCI CLI被验证circleci orb validate or .yml。然而,使用ORB开发工具包,我们很少奇异YAML文件锻炼。相反,它已经挤满了后,你的配置文件自动验证circleci orb包

> orb.yml命令。

Shellcheck

对使用的ORB开发套件的主要优点是引入了外部的bash脚本到您的最终ORB的能力。因为你可以保持您的bash脚本中SRC /脚本目录,您可以对脚本运行其他测试。

最基本的测试,以对抗的bash脚本运行是验证的一种形式:“shellchecking”。这是类似于猛砸棉绒,你可以找到更多的shellcheck.net

测试包工作流中,您将找到shellcheck ORB包括在内。shellcheck orb步骤是完全可选的,可以删除,特别是在您的orb不需要导入脚本的情况下。

单元测试

如果您正在利用orb开发工具包的<<包括(文件)>>文件包含功能和SRC /脚本目录存储和源的bash的文件,你可以编写真正的集成测试你的脚本。

单元测试BASH与BATS核心“></p>
      <p>该<code class=测试包工作流程包括蝙蝠/运行job,它负责自动执行。bat测试中src /测试目录中。

当您初始化ORB时,greet.yml命令生成,这包括greet.shshell脚本。也包括在内,是使用一个测试用例示例核心包(Bash自动化测试系统)框架,src /测试目录下,命名greet.bats

#来源:https://github.com/CircleCI-Public/Orb-Project-Template/blob/master/src/commands/greet.yml描述>此命令回声的“Hello World”使用文件包含。参数类型字符串默认的世界”描述你好谁?”步骤-运行环境PARAM_TO<< parameters.to >>的名字你好问候命令< <包括(脚本/ greet.sh) > >
#来源:https://github.com/CircleCI-Public/Orb-Project-Template/blob/master/src/scripts/greet.sh问候(){回声你好$ {PARAM_TO}}如果源代码为bats-core测试,#将不会运行。查看src/测试以获取更多信息。ORB_TEST_ENV=“bats-core”如果[$ {0#*$ ORB_TEST_ENV}==$ 0];然后问候科幻
#来源:https://github.com/CircleCI-Public/Orb-Project-Template/blob/master/src/tests/greet.bats#运行前的各项测试建立(){#载入脚本文件。./src/scripts/greet.sh}@测试“1:迎接世界{#通过导出环境变量或函数来模拟它们(在脚本得到源之后)出口PARAM_TO=“世界”#捕捉我们的“欢迎”函数的输出结果=$(问候[美元的结果==“你好,世界”]}

BATS核心

Bash自动化测试系统是一个开源测试框架,提供了一种简单的方法来测试UNIX程序。

在您src /测试是一个自述一个完整的和更新的教程创建BATS测试用例。

每一个。bat内部文件src /测试目录将被自动加载和测试蝙蝠/运行工作由提供蝙蝠天体

对于现实生活中的例子,来看看在测试中我们Shellcheck ORB

请记住,包括蝙蝠测试是可选的,如果需要,可以从您的配置文件中删除。

下面是来自Shellcheck ORB的BATS测试套件简化的片段。

#示例蝙蝠测试建立(){#采购我们的bash脚本可以让我们的存取权限范围内定义的函数。./src/scripts/check.sh#我们的脚本需要某些环境变量,这些变量将被设置为参数。我们可以在这里“模拟”那些输入。出口SC_PARAM_OUTPUT=“/tmp/shellcheck.log”出口SC_PARAM_SHELL=“庆典”}拆卸(){在每个函数中记录日志。#我们将回显出来的错误,否则将其删除,表示没有问题。rm-rf/tmp/shellcheck.log}这是一个在BATS框架中的测试用例。#这本质上只不过是一个名称的功能。#对于每个测试的情况下,设置()将运行 - >测试 - >拆卸() - >重复。# Esure Shellcheck可以找到这两个包含的shell脚本@测试“1:Shellcheck测试 - 查找这两个脚本”{#嘲讽输入出口SC_PARAM_DIR=“src /脚本”出口SC_PARAM_SEVERITY=“风格”出口SC_PARAM_EXCLUDE=“SC2148 SC2038 SC2059”Set_SHELLCHECK_EXCLUDE_PARAM Run_ShellCheck#测试是2个脚本被发现[$(wc- lTMP |awk'{打印$ 1}'==2]#如果错误在此测试用例任何地方抛出,将被认为是失败的。#我们使用标准的POSIX测试命令来测试“Run_ShellCheck”函数的功能。}

集成测试

直到此时,所有的测试之前已经装箱的天体发生的事情,并应用代码本身,而不是完成功能宝珠。对于ORB测试的最后,关键部分,你会测试你的ORB的命令和工作,以确保他们的工作按计划生产。出现这种情况的验证测试已经运行和您的ORB的一个新的开发版本发布后。

您的ORB的开发版本已经发布后,集成 - test_deploy工作流将被自动触发以进行测试。

集成 - test_deploy工作流运行一系列最终的集成测试,如果所有测试都通过,并且您处于主部署分支上,那么您可以部署orb。

测试宝珠命令

你会在看到的第一份工作集成 - test_deploy工作流程是integration-test-1工作,包括与样本集成测试你好,世界球体,由所生成的ORB-INIT命令。

你可以看到的定义integration-test-1工作在上面的职位关键。

集成测试-1:docker: - image: cimg/base:稳定步骤:- checkout - /greet

在您的本地版本,< orb-name >将您所提供的ORB名替换。这项工作提供了我们测试我们的ORB的工作在一个真实的环境CircleCI的方式。

从您的ORB的命令替换此作业的步骤。如果需要的话或以其他方式只是运行ORB的命令,以确保它们不会导致故障,您可以包括示例项目。

测试Orb的工作

如果我们需要测试我们的ORB的工作,以及命令,我们可以简单地添加旁边我们宝珠工作integration-test-1工作在我们下的config集成 - test_deploy流程。

集成 -  test_deploy:时:<< pipeline.parameters.run整合检验>>工作: - 集成测试,1  - 我-ORB / ORB的工作 - 球型工具的/ dev-促进-PROD-从-commit-主题:要求: - 集成测试,1  - 我-ORB / ORB-工作

下一步是什么?

一旦你添加了新的ORB的功能,并创造测试通过,现在是时候你ORB发布到ORB注册。观看宝珠发布流程有关自动发布语义版本化球体的信息指南。

也可以看看

  • 宝珠概念有关圆形球体的高级信息。
  • 宝珠发布流程有关您可以在您的工作流程和作业使用的天体的信息。
  • 宝珠参考可重复使用的球体,命令,参数和执行器的例子。
  • 配置食谱关于您如何使用CircleCI ORB食谱在你的配置更详细的信息。