云客户?
免费开始>
在MyJFrog中升级>
云的新功能>





概述

管道中每个步骤的执行可以在不同的节点上执行。因此,不能保证在一个步骤中对环境所做的更改将持续到后续步骤中。

有状态管道记住由步骤生成的信息,并使其可用于依赖的步骤或同一管道的连续运行。这是实现端到端持续交付的关键组件。

以下是一些示例用例:

  • 一个步骤创建关于已构建的commitSha和映像/文件版本的信息,然后由另一个步骤使用,以将正确的版本部署到测试环境中。
  • 步骤1为Staging环境创建VPC。它存储了VPC信息、子网、安全组等信息,这些信息是部署到登台环境的另一个步骤所需要的。
  • 您有一个使用Terraform创建测试环境的准备步骤。在您的管道的后期阶段,您有一个取消配置的步骤,它会破坏测试环境。这两个步骤都需要读取和更新Terraform状态文件,以便了解测试环境的当前状态。


页面内容


国家类型

JFrog pipeline支持三种类型的状态:

每一种状态都以信息持久性的范围为特征。

运行状态

管道的运行状态仅在同一运行中的步骤之间是持久的。存储在一个步骤中的信息可供该管道运行中的后续步骤使用。跑步完成后,State可以在查看该运行中的步骤时下载,但在以后的运行或其他管道中不可用


要跨步骤保留状态,请使用运行状态管理的实用程序函数


管道支持两种可以在步骤之间保存的运行状态信息。

键值对

使用add_run_variables实用程序函数,可以将键值对存储到运行状态。该键值对将自动对运行中的所有后续步骤可用作为环境变量对于没有直接或通过其他步骤或资源将变量添加为输入的步骤的步骤,将无法使用该变量。2022世界杯阿根廷预选赛赛程

管道:—名称:example_run_state_pipeline步骤:—名称:step_1类型:Bash配置:inputResources:—名称:myAppRepo #触发资源执行:onExec2022世界杯阿根廷预选赛赛程ute:—add_run_variables first_stepid=$step_id—add_run_variables ${first_stepid}_buildNumber=${run_number}…—名称:step_5类型:Bash配置:inputSteps:—名称:step_4执行:onExecute:—echo“Hello world”—echo $first_stepid—echo ${first_stepid}_buildNumber . sh


文件

使用add_run_files实用程序函数,一个步骤可以将文件存储在运行状态。任何后续步骤都可以使用restore_run_files函数从运行状态检索文件。无论添加文件的步骤是否是后续步骤的输入,同一运行中的步骤都可以使用这些文件。可以下载单个步骤的运行状态,其中包括该步骤上载或下载的文件。

管道:—名称:example_run_file_pipeline步骤:—名称:step_1类型:Bash配置:inputResources:—名称:myAppRepo #触发资源执行:onExec2022世界杯阿根廷预选赛赛程ute: echo "Hello world" onComplete:—add_run_files myfile cachefile.txt…—名称:step_5类型:Bash配置:inputSteps:—名称:step_4执行:onStart:—restore_run_files myfile cachefile.txt onExecute: echo "Hello world"

管道状态

一个管道状态对于同一管道的所有运行都是持久的。在管道运行期间由步骤存储的信息可供该管道的后续运行使用。

要跨管道保存状态,可以使用用于管道状态管理的实用函数

管道支持两种可以在步骤之间保存的运行状态信息。

键值对

使用add_pipeline_variables实用程序函数,可以将键值对存储到管道状态。该键值对将自动作为环境变量对所有后续运行可用。

管道:—名称:example_pipeline_state_pipeline步骤:—名称:step_1类型:Bash配置:inputResources:—名称:myAppRepo #触发资源执行:onExec2022世界杯阿根廷预选赛赛程ute:—echo“Hello world”—echo $previous_buildNumber…—名称:final_step类型:Bash配置:inputSteps:—名称:prior_step执行:onExecute: #保留管道下次运行的构建号—add_pipeline_variables $previous_buildNumber=${run_number}

文件

使用add_pipeline_files实用程序函数,一个步骤可以将文件存储到管道状态。然后,任何步骤都可以使用restore_pipeline_files函数从管道状态检索文件。

管道:—名称:example_pipeline_file_pipeline步骤:—名称:step_1类型:Bash配置:inputResources:—名称:myAppRepo #触发资源执行:onStar2022世界杯阿根廷预选赛赛程t: #从管道的前一次运行中恢复文件—restore_pipeline_files myfile cachefile.txt onExecute: echo "Hello world"…—名称:final_step类型:Bash配置:inputSteps:—名称:prior_step执行:onExecute: echo "Hello world" onComplete: #为管道的下一次运行保留文件—add_pipeline_files myfile cachefile.txt

基于资源的状态

使用write_output函数,键值可以作为属性存储在任何输出资源中。每一步都有资源Input可以作为环境变量访问其脚本中的键值信息。

该值的环境变量为Res_ <资源名>_<密钥名>

基于资源的状态信息跨管道是持久的,因此它可以用作将信息从一个管道传递到下一个管道的机制。

管道:-名称:example_resource_state_pipeline步骤:-名称:step_1类型:Bash配置:inputResources: -名称:myAppRepo #触发资源outputRe2022世界杯阿根廷预选赛赛程sources: -名称:myImage #图像资源执行:onExecute: - echo $res_myAppRepo_commitSha - write_output myImage "imageTag=master" "sha=$res_myAppRepo_commitSha" "description=\"hello world\"" -名称:step_2类型:Bash配置:inputResources: -名称:myImage执行:onExecute:—echo $res_myImage_sha—echo $res_myImage_description
  • 没有标签
版权所有©2022 JFrog Ltd.