云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

当管道中的步骤必须在同一个构建节点上执行时,可以将它们分配给相同的节点亲密团体.当一个步骤需要访问前一个步骤生成的数据时,这可能是必要的,这些数据保留在构建节点的运行时环境中。


由于Pipelines将步骤的执行分布到节点池中的节点之间,因此任何步骤都不必依赖于前一个步骤生成的文件或工件可用,因为前一个步骤可能已经在不同的构建节点中执行。而首选的做法往往是 创建有状态管道 ,您可能需要通过亲和性组将步骤绑定到同一个构建节点。组中所有步骤可用的目录的路径作为名为shared_workspace并可用于在步骤之间共享文件。

一些本地步骤(例如,DockerBuild而且DockerPush)可能要求他们结合在一起成为一个亲和团体。

当然,如果管道使用的节点池只有一个节点,那么您的步骤仍然可以成功,而无需将它们绑定到亲和组(因为所有步骤都在同一个节点上执行)。但是,由于管理员可以在任何时候增加任何节点池中的节点数量,因此您仍然应该使用亲和组来绑定需要它们的步骤,以确保它们在条件发生变化时继续成功执行。

同一亲和关系组中的步骤不能并行运行。

页面内容


affinityGroup标签的用法


步骤通过其绑定到亲和性组配置部分,使用affinityGroup标签。

为单个步骤指定亲和性组:

步骤:—name:  type:  configuration: affinityGroup:  . type: 

可以指定任何字符串作为亲和性组的名称,但必须对所有字符串使用相同的字符串affinityGroup标记在希望在组中绑定在一起的步骤中的。

或者,如果管道中的所有步骤都在同一个亲和组中,affinityGroup可以在管线配置部分指定:

管线:—name:  configuration: affinityGroup:  steps:— . cfg

例子


下面的简化管道创建了绑定到同一个管道的两个步骤affinityGroup被称为在一起:

pipelines.yml
管道:—name: pipeline_affinityGroup_example步骤:—name: ag_step_1 type: Bash配置:affinityGroup: together执行:onExecute:—echo "Running " $pipeline_name "|" $step_name > $shared_workspace/myoutput.txt - cat $shared_workspace/myoutput.txt - name: ag_step_2 type: Bash配置:affinityGroup: together inputSteps:—name: ag_step_1执行:onExecute: - cat $shared_workspace/myoutput.txt

该步骤ag_step_1在它执行的构建节点中创建一个文本文件,使用shared_workspace变量确保该文件对两个步骤都可用。接下来的步骤,ag_step_2尝试读取文件。

通过绑定ag_step_1而且ag_step_2进入相同的亲和性组,文件即ag_step_1在构建节点的文件系统中创建的ag_step_2因为它被保证运行在同一个节点中。不受亲善团体的约束,ag_step_2可能会失败,因为它可能在文件不存在的节点中执行。

在JFrog平台中加载此管道时,交互图显示在管道的历史指示这些步骤绑定到相同的亲和关系组:

当管道运行时,管路运行日志表明,ag_step_2能够成功地在节点的文件系统中找到由谁创建的文件ag_step_1


  • 没有标签
版权所有©2022 JFrog Ltd.