配置管道时,可以添加特定类型的任务,以便管道针对所需操作运行这些任务。每种任务类型都与另一个应用程序集成,并在构建,测试和交付应用程序时启用管道。

要运行管道,无论是必须从存储库中提取工件以进行部署,运行远程脚本还是要求组成员批准用户操作, Code Stream 都具有相应类型的任务!

Code Stream 支持取消各种类型任务上的管道运行。在管道执行上单击取消时,任务、阶段或整个管道将进入取消状态并取消管道运行。

Code Stream 中,可以在使用以下任务时取消任务、阶段或整个管道上的管道运行:
  • Jenkins
  • SSH
  • PowerShell
  • 用户操作
  • 管道
  • 云模板
  • vRO
  • POLL

Code Stream 不会将取消行为传播到这些任务的第三方系统:CI、自定义集成或 Kubernetes。 Code Stream 将任务标记为已取消并立即停止获取状态,而不会等待任务完成。单击取消时,任务可能会在第三方系统上完成或失败,但会在 Code Stream 中立即停止运行。

在管道中使用任务之前,请确认相应的端点可用。

表 1. 获取批准或设置决策点
任务类型 作用 示例和详细信息
用户操作

“用户操作”任务启用所需的批准,以控制何时运行管道以及何时必须等待批准。

请参见如何运行管道和查看结果。和如何管理 Code Stream 中的用户访问和批准

条件

添加决策点,根据条件表达式确定继续运行或停止管道。条件为 true 时,管道将运行连续任务。条件为 false 时,管道将停止。

请参见如何在条件任务中使用变量绑定来运行或停止 Code Stream 中的管道

表 2. 自动执行持续集成和部署
任务类型 作用 示例和详细信息
云模板

从 GitHub 部署自动化云模板,置备应用程序,并为您的部署自动执行该云模板的持续集成和持续交付 (CICD)。

请参见如何自动执行从 Code Stream 中的 YAML 云模板部署的应用程序的发布

首次选择创建更新,然后选择云模板版本后,将显示云模板参数。可以将以下元素(可使用变量绑定)添加到云模板任务中的输入文本区域:

  • 整数
  • 枚举字符串
  • 布尔
  • 数组变量

在输入中使用变量绑定时,请注意以下例外。对于枚举,必须从固定集中选择枚举值。对于布尔值,必须在输入文本区域中输入值。

Cloud Assembly 中的云模板包含输入变量时,云模板参数将显示在云模板任务中。例如,如果云模板的输入类型为 Integer,则可以直接输入整数,也可以使用变量绑定作为变量输入。

CI

“CI”任务通过从注册表端点中提取 Docker 构建映像并将其部署到 Kubernetes 集群,将代码持续集成到管道中。

CI 任务将日志的 100 行显示为输出,在下载日志时显示 500 行。

CI 任务需要临时端口 32768 到 61000。

请参见在使用智能管道模板之前在 Code Stream 中计划 CICD 本机构建

自定义

“自定义”任务将 Code Stream 与您自己的构建工具、测试工具和部署工具集成。

请参见如何将自己的生成工具、测试工具和部署工具与 Code Stream 集成

Kubernetes

自动将软件应用程序部署到 Kubernetes 集群。

请参见如何自动执行 Code Stream 中应用程序到 Kubernetes 集群的发布

管道

将管道嵌套在主管道中。嵌套管道时,该管道将作为主管道中的任务。

在主管道的“任务”选项卡上,可以通过单击嵌套管道的链接轻松导航到该管道。将在新的浏览器选项卡中打开嵌套管道。

要在执行中查找嵌套管道,请在搜索区域中输入 nested

表 3. 集成开发、测试和部署应用程序
任务类型... 作用... 示例和详细信息...
Bamboo

与 Bamboo 持续集成 (CI) 服务器交互,该服务器持续生成、测试和集成软件,为部署做好准备,并在开发人员提交更改时触发代码生成。它会公开 Bamboo 生成的工件位置,以便任务可以输出用于生成和部署的其他任务的参数。

连接到 Bamboo 服务器端点并从管道启动 Bamboo 生成计划。

Jenkins

触发生成和测试源代码的 Jenkins 作业,运行测试用例,并且可以使用自定义脚本。

请参见如何将 Code Stream 与 Jenkins 集成

TFS

支持将管道连接到 Team Foundation Server,以便管理和调用生成项目,包括可生成和测试代码的已配置作业。

有关 Code Stream 支持的 Team Foundation Server 版本,请参见什么是 Code Stream 中的端点

vRO

通过在 vRealize Orchestrator 中运行预定义工作流或自定义工作流来扩展 Code Stream 的功能。

Code StreamvRealize Orchestrator 支持基本身份验证和基于令牌的身份验证。 Code Stream 使用 API 令牌对 vRealize Orchestrator 集群进行身份验证和验证。通过基于令牌的身份验证, Code Stream 支持使用云可扩展性代理的 vRealize Orchestrator 端点。因此,在 Code Stream 中,可以通过使用云可扩展性代理的 vRealize Orchestrator 端点触发工作流。

请参见如何将 Code Stream 与 vRealize Orchestrator 集成

表 4. 通过 API 集成其他应用程序
任务类型... 作用... 示例和详细信息...
REST

Code Stream 与其他使用 REST API 的应用程序集成,以便您能够持续开发和交付相互交互的软件应用程序。

请参见如何使用 REST API 将 Code Stream 与其他应用程序集成

Poll

调用 REST API,并对其进行轮询,直到管道任务满足退出条件并完成为止。

Code Stream 管理员最多可以将轮询计数设置为 10000。轮询时间间隔必须大于或等于 60 秒。

选中出现故障时继续复选框时,如果计数或时间间隔超过这些值,轮询任务将继续运行。

POLL Iteration Count:显示在管道执行中,并显示 POLL 任务从 URL 请求响应的次数。例如,如果 POLL 输入为 65,而 POLL 请求运行的实际次数为 4,则管道执行输出中的迭代计数将显示 4(共 65 次)。

请参见如何使用 REST API 将 Code Stream 与其他应用程序集成

表 5. 运行远程脚本和用户定义的脚本
任务类型 作用 示例和详细信息
PowerShell

通过 PowerShell 任务, Code Stream 可以在远程主机上运行脚本命令。例如,脚本可以自动执行测试任务,并运行管理类型的命令。

脚本可以是远程脚本,也可以是用户定义的脚本。可以通过 HTTP 或 HTTPS 进行连接,并且可以使用 TLS。

Windows 主机必须配置 winrm 服务, winrm 必须配置 MaxShellsPerUser MaxMemoryPerShellMB

要运行 PowerShell 任务,您必须具有与远程 Windows 主机的活动会话。

PowerShell 命令行长度

如果输入base64 PowerShell命令,请注意必须计算整体命令长度。

Code Stream 管道对 base64 PowerShell 命令进行编码并包装到另一个命令中,这会增加命令的总长度。

PowerShell winrm 命令允许的最大长度为 8192 字节。对 PowerShell 任务进行编码和包装时,命令长度限制较低。因此,必须在输入 PowerShell 命令之前先计算命令长度。

Code Stream PowerShell 任务的命令长度限制取决于原始命令的 base64 编码长度。命令长度的计算方法如下。

3 * (length of original command / 4)) - (numberOfPaddingCharacters) + 77 (Length of Write-output command)

Code Stream 的命令长度必须小于最大限制 (8192)。

配置 MaxShellsPerUserMaxMemoryPerShellMB 时:

  • MaxShellsPerUser 的可接受值为 500(50 个并发管道),每个管道 5 个 PowerShell 任务。要设置值,请运行:winrm set winrm/config/winrs '@{MaxShellsPerUser="500"}'
  • MaxMemoryPerShellMB 的可接受内存值为 2048。要设置值,请运行:winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="2048"}'

脚本会将输出写入到其他管道可以使用的响应文件中。

SSH

通过 SSH 任务,Bash shell 脚本任务可以在远程主机上运行脚本命令。例如,脚本可以自动执行测试任务,并运行管理类型的命令。

脚本可以是远程脚本,也可以是用户定义的脚本。可以通过 HTTP 或 HTTPS 进行连接,并且需要私钥或密码。

必须在 Linux 主机上配置 SSH 服务,并且 MaxSessions 的 SSHD 配置必须设置为 50

如果同时运行多个 SSH 任务,请增加 SSH 主机上的 MaxSessionsMaxOpenSessions。如果需要修改 MaxSessions 和 MaxOpenSessions 配置设置,请勿使用 vRealize Automation 实例作为 SSH 主机。

SSH 任务不支持 OpenSSH 类型的私钥。使用以下方法之一生成公钥/私钥对:
  • 在 Windows 计算机上,使用 PuTTYgen 生成密钥对。
  • 在 Mac 或 Linux 计算机上,使用 ssh -V 验证 SSH 版本是否低于 7.8,然后在终端窗口中使用 ssh -keygen 生成密钥对。
注: 确认生成的密钥不显示 BEGIN OPENSSH PRIVATE KEY
如果生成的公钥是远程计算机中的授权密钥,请参阅以下文章之一,更改 OpenSSH 专用格式:

配置 SSH 任务时,必须以纯文本形式输入私钥。将密钥保存为变量或输入会更改密钥格式,并且管道任务将无法运行。

脚本可以是远程脚本,也可以是用户定义的脚本。例如,脚本可能会如下所示:

message="Hello World" echo $message

脚本会将输出写入到其他管道可以使用的响应文件中。