Code Stream 可以与 vRealize Orchestrator (vRO) 集成,以便通过运行 vRO工作流来扩展其功能。vRealize Orchestrator 包括许多可与第三方工具集成的预定义工作流。这些工作流有助于自动执行和管理 DevOps 流程以及自动执行批量操作等。

例如,您可以在管道的 vRO 任务中使用工作流,以启用用户、移除用户、移动虚拟机以及与测试框架集成以在管道运行过程中测试代码等。可以在 code.vmware.com 中浏览 vRealize Orchestrator 工作流的代码示例。

使用 vRealize Orchestrator 工作流,管道可以在生成、测试和部署应用程序的过程中运行操作。您可以将预定义的工作流包含到管道中,也可以创建并使用自定义工作流。每个工作流都包含输入、任务和输出。

要在管道中运行 vRO 工作流,该工作流必须显示在包含到管道的 vRO 任务的可用工作流列表中。

管理员首先必须在 vRealize Orchestrator 中执行以下步骤,然后工作流才可以显示在管道的 vRO 任务中:

  1. CODESTREAM 标记应用到 vRO 工作流。
  2. vRO 工作流标记为全局工作流。

前提条件

  • 确认您能够以管理员身份访问 vRealize Orchestrator 的内部部署实例。要获取帮助,请向管理员咨询并参见 vRealize Orchestrator 文档
  • 验证您是 Code Stream 中项目的成员。如果您不是其成员,则让 Code Stream 管理员将您添加为项目的成员。请参见如何在 Code Stream 中添加项目
  • Code Stream 中,创建一个管道并添加一个阶段。

过程

  1. 以管理员的身份准备 vRealize Orchestrator 工作流以让管道运行。
    1. vRealize Orchestrator 中,查找要在管道中使用的工作流,例如用于启用用户的工作流。
      如果所需的工作流不存在,您可以创建该工作流。
    2. 在搜索栏中,输入标记工作流以查找标记工作流
    3. 标记工作流卡视图上,单击运行,随后将显示配置区域。
    4. 标记的工作流文本区域中,输入在 Code Stream 管道中使用的工作流的名称,然后从列表中选择该工作流。
    5. 标记文本区域中,以大写字母形式输入 CODESTREAM
    6. 单击全局标记复选框。
    7. 单击运行,将 CODESTREAM 标记附加到您要在 Code Stream 管道中选择的工作流。
    8. 在导航窗格中,单击工作流,并确认 CODESTREAM 标记显示在管道将运行的工作流卡视图上。
      登录到 Code Stream 并向管道添加 vRO 任务后,标记的工作流会显示在工作流列表中。
  2. Code Stream 中,为 vRealize Orchestrator 实例创建端点。
    1. 单击端点 > 新建端点
    2. 选择一个项目。
    3. 输入相关的名称。
    4. 输入 vRealize Orchestrator 端点的 URL。
      请使用以下格式: https://vro-appliance.yourdomain.local:8281
      请勿使用以下格式:https://vro-appliance.yourdomain.local:8281/vco/api
      vRealize Automation 设备中嵌入的 vRealize Orchestrator 实例的 URL 是设备的 FQDN,不含端口。例如: https://vra-appliance.yourdomain.local/vco
      vRealize Automation 8.x 开始,对于外部 vRealize Orchestrator Appliance,设备的 FQDN 为 https://vro-appliance.yourdomain.local
      对于 vRealize Automation 7.x 中包含的外部 vRealize Orchestrator Appliance,设备的 FQDN 为 https://vro-appliance.yourdomain.local:8281/vco
      如果在添加端点时出现问题,可能需要导入具有 SHA-256 证书指纹但移除了冒号的 YAML 配置。例如, B0:01:A2:72... 变为 B001A272...。示例 YAML 代码类似于:
      ```
      ---
      project: Demo
      kind: ENDPOINT
      name: external-vro
      description: ''
      type: vro
      properties:
        url: https://yourVROhost.yourdomain.local
        username: yourusername
        password: yourpassword
        fingerprint: <your_fingerprint>
      ```
    5. 如果您输入的 URL 需要证书,单击接受证书
    6. 如果 vRealize Orchestrator 端点的版本为 8.0 到 8.7,请选择基本身份验证作为“身份验证类型”,然后输入 vRealize Orchestrator 服务器的用户名和密码。

      如果使用非本地用户进行身份验证,则必须省略用户名的域部分。例如,要使用 [email protected] 进行身份验证,必须在用户名文本区域中输入 svc_vro

      注: 如果 vRealize Orchestrator 端点的版本为 8.8 或更高版本,则不支持“基本身份验证”,并且端点创建将失败。
  3. 准备管道以运行 vRO 任务。
    1. 向管道阶段添加 vRO 任务。
    2. 输入相关的名称。
    3. 在“工作流属性”区域,选择 vRealize Orchestrator 端点。
    4. 选择您在 vRealize Orchestrator 中标记为 CODESTREAM 的工作流。
      如果选择您创建的自定义工作流,可能需要键入输入参数值。
    5. 对于执行任务,单击基于条件
      如果必须对 vRealize Orchestrator 任务应用条件,请在条件区域中输入条件。
    6. 输入要在管道运行时应用的条件。
      何时运行管道... 选择条件...
      基于条件

      仅在已定义的条件的评估结果为 true 时运行管道任务。如果该条件为 false,则跳过任务。

      vRO 任务允许包含布尔表达式,该表达式使用以下操作数和运算符。

      • 管道变量,例如 ${pipeline.variableName}。输入变量时,仅可使用大括号。
      • 任务输出变量,例如 ${Stage1.task1.machines[0].value.hostIp[0]}
      • 默认管道绑定变量,例如 ${releasePipelineName}
      • 不区分大小写的布尔值,例如 truefalse'true''false'
      • 不带引号的整数值或小数值。
      • 带有单引号或双引号的字符串值,例如 "test"'test'
      • 字符串和数值类型的值,例如 == Equals!= Not Equals
      • 关系运算符,例如 >>=<<=
      • 布尔逻辑,例如 &&||
      • 算术运算符,例如 +-*/
      • 带有圆括号的嵌套表达式。
      • 包含字面值 ABCD 的字符串的评估结果为 false,因此将跳过任务。
      • 不支持一元运算符。

      示例条件可以是 ${Stage1.task1.output} == “Passed” || ${pipeline.variableName} == 39

      始终 如果选择始终,管道将运行任务而不应用条件。
    7. 输入问候消息。
    8. 单击验证任务,并更正出现的任何错误。
  4. 保存、启用并运行管道。
  5. 管道运行之后,检查结果。
    1. 单击执行
    2. 单击该管道。
    3. 单击相关任务。
    4. 检查结果、输入值和属性。
      您可以确定工作流执行 ID、对任务做出响应的人员、该人员做出响应的时间以及该人员添加的任何注释。

结果

恭喜!您已标记了要在 Code Stream 中使用的 vRealize Orchestrator 工作流,并在 Code Stream 管道中添加了 vRO 任务,以使其运行在 DevOps 环境中自动执行某个操作的工作流。

示例: vRO 任务输出格式

vRO 任务的输出格式类似于以下示例。

[{
                "name": "result",
                "type": "STRING",
                "description": "Result of workflow run.",
                "value": ""
},
{
                "name": "message",
                "type": "STRING",
                "description": "Message",
                "value": ""
}]

下一步做什么

继续将其他 vRO 工作流任务包含到管道中,以便在开发环境、测试环境和生产环境中自动执行任务。