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-tools
orb,这是ORB开发工具包的主要组成部分。该orb-tools /线头
工作是负责基础YAML掉毛。您可以修改通过掉毛规则或其他设置作业的参数,这些都对球体注册表中列出。
配置验证
该测试包
工作流将运行球型工具/包作业,与您的YAML linting作业并行(orb-tools /线头
),自动包装和验证配置。
单数orb.yml
文件(填充ORB)可经由CircleCI CLI被验证circleci orb validate or .yml
。然而,使用ORB开发工具包,我们很少奇异YAML文件锻炼。相反,它已经挤满了后,你的配置文件自动验证circleci orb包
命令。
Shellcheck
对使用的ORB开发套件的主要优点是引入了外部的bash脚本到您的最终ORB的能力。因为你可以保持您的bash脚本中SRC /脚本目录,您可以对脚本运行其他测试。
最基本的测试,以对抗的bash脚本运行是验证的一种形式:“shellchecking”。这是类似于猛砸棉绒,你可以找到更多的shellcheck.net。
在测试包
工作流中,您将找到shellcheck ORB包括在内。shellcheck orb步骤是完全可选的,可以删除,特别是在您的orb不需要导入脚本的情况下。
单元测试
如果您正在利用orb开发工具包的<<包括(文件)>>
文件包含功能和SRC /脚本
目录存储和源的bash的文件,你可以编写真正的集成测试你的脚本。
测试包工作流程包括蝙蝠/运行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注册。观看宝珠发布流程有关自动发布语义版本化球体的信息指南。