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





概述

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

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

一些示例用例如下:

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


页面内容


状态类型

JFrog管线支持三种状态:

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

运行状态

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


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


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

键值对

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

—name: example_run_state_pipeline steps:—name: step_1 type: Bash configuration: inputResources:—nam2022世界杯阿根廷预选赛赛程e: myAppRepo #触发资源执行:onExecute:—add_run_variables first_stepid=$step_id—add_run_variables ${first_stepid}_buildNumber=${run_number}…—name: step_5 type: Bash configuration: inputSteps:—name: step_4 execute: onExecute:—echo "Hello world" - echo $first_stepid - echo ${first_stepid}_buildNumber . sh


文件

使用add_run_files实用程序功能,一个步骤可以将文件存储在运行状态。然后,任何后续步骤都可以使用restore_run_files函数从运行状态检索文件。文件可用于同一运行中的步骤,无论添加文件的步骤是否是后面步骤的输入。运行状态可以为单个步骤下载,由该步骤上传或下载的文件组成。

管道:- name: example_run_file_pipeline步骤:- name: step_1 type: Bash配置:inputResources: - name: myAppRe2022世界杯阿根廷预选赛赛程po #触发资源执行:onExecute: echo "Hello world" onComplete: - add_run_files myfile cachefile.txt #保存变量'myfile'为'cachefile.txt'…- name: step_5类型:Bash配置:inputSteps: - name: step_4执行:onStart: - restore_run_files myfile cachefile.txt #保存'cachefile.txt'的内容到'myfile' onExecute: echo "Hello world"

管道状态

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

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

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

键值对

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

pipeline:—name: example_pipeline_state_pipeline steps:—name: step_1 type: Bash configuration: inputResou2022世界杯阿根廷预选赛赛程rces:—name: myAppRepo #触发资源执行:onExecute: - echo "Hello world" - echo $previous_buildNumber . .- name: final_step type: Bash configuration: inputSteps: - name: prior_step execution: onExecute: #为管道的下一次运行保留构建号- add_pipeline_variables $previous_buildNumber=${run_number}

文件

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

管道:- name: example_pipeline_file_pipeline步骤:- name: step_1 type: Bash配置:inputResources: - name: myAppRe2022世界杯阿根廷预选赛赛程po #触发资源执行:onStart: #从上次运行的管道恢复文件- restore_pipeline_files myfile cachefile.txt #保存'cachefile.txt'的内容到'myfile' onExecute: echo "Hello world" . .- name: final_step type: Bash配置:inputSteps: - name: prior_step execute: onExecute: echo "Hello world" onComplete: #保存文件为下次运行的管道- add_pipeline_files myfile cachefile.txt #保存变量'myfile'为'cachefile.txt'

基于资源的状态

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

该值的环境变量的格式为Res_ <资源名>_<键名> . properties . properties

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

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