Orbs概念

快速开始

Circleci Orbs.是配置元素的可共享软件包,包括职位命令,和执行者。ORBS制作写作和自定义CIRCLECI配置简单。在ORB中使用的可重用配置元素是完全解释的可重用的配置参考

ORB配置元素

Circleci's可重用配置功能允许您定义可参数化配置元素并在整个项目配置文件中重新使用这些元素。建议你熟悉完整的配置参考在继续前进之前的功能可重用的配置参考

命令

命令包含一个或多个步骤参数可用于修改行为。命令是ORB的逻辑,负责执行步骤,如检查代码,或者运行shell代码,例如,运行bash或CLI工具。有关更多信息,请参见创作可重用命令指南。

作为示例,AWS S3 ORB包括一个命令将文件或对象复制到新位置:AWS-S3 / COPY。如果您的AWS身份验证详细信息存储为环境变量,则在配置中使用此命令的语法只是:

2.1绿色原子AWS-S3circleci/aws-s3@x.y.z.职位构建Docker.-图片'CIMG / PYTHON:3.6'验证用户名mydockerhub-user.密码$ dockerhub_password.#上下文/项目UI ENV-VAR参考脚步-查看-mkdir bucket && echo“lorem ipsum”> bucket/ build_assets .txt#使用AWS-S3 ORB的“复制”命令。-AWS-S3 / COPY铲斗/ build_asset.txt.txt.'S3:// my-s3-batchet-name'#...工作流,其他工作等等。

看看AWS-S3 ORB注册表中的页面以获取更多信息。

执行者

executors是参数化执行环境,其中职位可以运行。Circleci提供多个执行者选项

  • Docker.
  • 苹果系统
  • 视窗
  • 机器(Linux VM)

在ORB中定义的执行器可用于在项目配置中运行作业,或在ORB中定义的作业中运行作业。

执行者定义示例

描述>选择要使用的NodeJ的版本。使用Circleci的高速缓存方便为CI构建的图像。Docker.-图片'CIMG / node:<< parameters.tag >>'验证用户名mydockerhub-user.密码$ dockerhub_password.#上下文/项目UI ENV-VAR参考参数标签默认'13.11'描述>选择特定的CIMG / Node Image版本标记:https://hub.docker.com/r/cimg/node.类型
描述>选择Ruby的版本要使用。使用Circleci的高速缓存方便为CI构建的图像。可以使用此列表中的任何可用标记:https://hub.docker.com/r/cimg/ruby/tags.Docker.-图片'CIMG / RUBY:<<parameters.tag.>>'验证用户名mydockerhub-user.密码$ dockerhub_password.#上下文/项目UI ENV-VAR参考参数标签默认'2.7'描述`circleci /红宝石`odcker图像版本标签。类型

在里面节点ORB.例如,提供了参数化的基于Docker的执行器,通过您可以设置Docker标记。这提供了一种在与节点ORB一起使用时测试应用程序对任何版本的Node.js的简单方法测试工作

有关更多信息,请参阅指南创作可重复使用的执行者和注册页面的节点ORB.

职位

职位定义一系列脚步在给定的情况下运行执行者,并使用策划使用工作流程。工作也将单独返回其状态GitHub检查

导入具有作业的ORB时,您可以直接从工作流程引用。

版本:2.1 ORB: /  @ x.y #orb version工作流程:使用 -  ORB-JOB:作业: -   / 

看看创作可重复使用的工作引导更多信息,以及使用节点测试作业ORB注册表中的示例。

使用例子

使用ORB开发套件,添加一个新的使用示例是创建新文件的简单名称 - example.yml在ORB项目中SRC /例子目录。使用示例不直接在项目配置中使用,但是是一种ORB元数据,用于共享用户如何最好地利用它们的配置,并显示参考ORB注册表。以下是示例使用示例:

#源https://github.com/circleci-public/orb-project-template/blob/master/src/examples/example.yml.描述>示例示例说明。用法2.1绿色原子 /  @ 1.2.3工作流程使用-My-Orb职位- / 

名称空间

一种名称空间是由用户或组织声明的唯一标识符,用于组由作者组组一组ORB。每个用户或组织都可以申请独特和不可变的命名空间。每个命名空间都可以包含许多独特的名为Orbs。

例如,Circleci / Rails.ORB可能会使用ORB调用的注册表中共存<其他 - 命名空间> / Rails因为它们是单独的名称空间。

默认情况下,组织只能声明一个名称空间。此策略旨在限制名称抢注和名称空间干扰。如果您需要更改您的名称空间,请联系技术支持。

默认情况下,已创建的命名空间显示为“社区”名称空间ORB注册表

语义版本化

orbs利用这一点塞缪弗发布过程,其中每个ORB更新遵循标准化的版本控制模式,ORB作者和用户应该利用。

在语义版本控制中,发行版本由三个整数表示由一个分隔的,其中每个整数表示添加了不同类型的更改。

[主要]。[次要]。[补丁]
塞缪弗 描述
重大的 打破变化。
向后兼容其他功能。
补丁 Bug修复。

导入ORB时,可以将其引导到特定的SEMV组件。

导入版本 描述
1.2.3 将匹配完整的Semver版本。不会引入任何变化。
1.2 锁定到主要版本1,次要版本2,将收到所有补丁更新。
1 锁定到主要版本1。将收到所有次要和补丁更新。主要版本不会自动更改。
挥发性 不建议将拉动上次发布的ORB版本,可能有用于测试。不是Semver版本控制的一部分。

为了避免对用户的CI进程产生负面影响,ORB作者应严格遵守SEMVER版本,以确保在此期间不会介绍破坏次要要么补丁更新级别。

注意:Circleci目前不支持非数字语义版本控制元素。我们建议您在x.y.z格式中使用semver样式版本字符串,或dev:*格式的开发式版本字符串。

ORB版本(开发VS生产与内联)

生产球体

生产球体是不可变的,可以在ORB注册表

  • 生产ORB是不可变的,无法删除或编辑它们,并且必须在新的SEMV释放中提供更新
  • 例如,版本字符串必须是SEMV格式, / @ 1.2.3
  • 生产ORB只能由命名空间组织的所有者发布
  • 发布到ORB注册表
  • 开源,释放麻省理工学院执照
  • 可通过Circleci CLI获得

发展球场

开发模板是临时覆盖能够的ORB标签版本,可在部署Semver部署的生产变化之前快速开发和测试。

  • 发育可能是可变的,可以覆盖,并在发布后90天自动过期
  • 版本字符串必须从开发:然后是任何字符串,例如, / @dev:my-feature-branch
  • 开发人员可以由命名空间组织的任何成员发布
  • 不会出现在ORB注册表上
  • 开源,释放麻省理工学院执照
  • 通过Circleci CLI(如果已知开发标签名称)

内联球体

内联轨道在用户配置中直接定义,完全本地本地并将其范围用于个体项目。

请参阅:写入inline Orbs有关内联轨道的更多信息。

  • 未发布到ORB服务
  • 没有版本化
  • 仅存在于用户配置中
  • 无法在存储库外部访问
  • 不公共
  • 通过circleci cli无法访问

ORB包装

所有Circleci Orbs都是奇异的yaml文件,通常是命名的Orb.yml.。但是,对于开发来说,将代码分解为更可管理的块通常更容易。该Circleci Orb包命令,一个组成部分ORB开发套件,用于将单独的yaml文件“包装”或将单独的yaml文件集中在一起。

如果您使用的是使用ORB开发套件,则由包含的CI / CD管道自动处理ORB包装,其中包含ORB-Tools / Pack工作。

示例:ORB项目结构

类型 名称
命令
例子
执行者
职位
@ Orb.yml.

为了一个室外,一个@ Orb.yml.文件必须存在。该@表示我们的ORB项目。在同一目录中,您可以为每个ORB组件类型的类型包含其他目录,例如命令职位执行者,和例子。任何其他文件或文件夹都将安全忽略。

此外,这是命令为ORB开发人员提供了一个特殊的预处理器,允许您使用使用外部文件导入代码118金宝博娱乐城文件包括语法<<包括(文件)>>)。

CLI命令

Circleci Orb包

> orb.yml

对于ORB开发套件用户,此步骤自动处理。

文件包括语法

文件包括句法 (<<包括(dir / file)>>)是一个特殊的配置增强功能,允许您将文件的内容导入到位于Circleci Orb配置文件中的任何键的值。该<<包括(dir / file)>>语法是与之使用的特殊键Circleci Orb包命令将不会在Circleci上更广泛地工作。

什么时候Circleci Orb包

> orb.yml针对包含一个包含的目录@ Orb.yml.文件,pack命令开始将文件的内容组合成单个Orb.yml.文件。在包装过程中,每个实例<<包括(dir / file)>>值将由在内部引用的文件的内容替换。

对象的相对位置总是引用包含的文件@ Orb.yml.文件。

描述一个简单的命令,它在包装时从文件导入。脚步-名称你好,问候命令<< include(scripts / file.sh)>>
#这是一个bash文件,但真的可以是任何基于文本的文件回声“你好,世界”
描述一个简单的命令,它在包装时从文件导入。脚步-名称你好,问候命令|#这是一个bash文件,但真的可以是任何基于文本的文件回声“你好世界”

文件包含对于将配置的Bash逻辑与YAML分离,尤其有用。包括Bash脚本将允许您在ORB之外开发和测试BASH。

查看更多关于包括Bash脚本的信息ORB作者指南。

在ORB和注册时间分辨率内使用ORBS

Orbs Stanza可以在ORB内使用。由于生产ORB发布是不可变的,因此系统将在注册ORB时的所有ORB依赖项,而不是在运行构建时解决所有ORB依赖项。

例如,ORBfoo / bar.发布于1.2.3版,使用进口的Orbs Stanzabiz / baz @ volatile。在您注册的时候foo/bar@1.2.3系统将解决biz / baz @ volatile作为最新版本,并将其元素直接包含在包装版本中foo/bar@1.2.3

如果biz / baz.已更新为3.0.0.,任何人使用foo/bar@1.2.3不会看到变化biz/baz@3.0.0直到foo / bar.发表于较高的版本1.2.3

ORB元素可以直接与其他ORB的元素组成。例如,您可能有一个看起来像下面的例子的ORB。

2.1绿色原子一些草坪一些ns / some-orb @ volatile执行者我的执行者某些ORB /他们的执行者命令我的命令一些 -  Orb /他们的命令职位我的工作一些或足月/他们的工作另一份工作执行者我的执行者脚步-我的命令param1你好”

也可以看看

  • 参考ORB介绍对于Circleci Orbs的高级概述。
  • 参考ORBS参考有关ORB的详细参考信息,包括命令,作业和执行者的描述。
  • 参考ORBS常见问题解答有关使用球体时经常遇到的问题的信息。