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





概述

本页描述了管道中环境变量的可用性和用法。


您可以自定义您的工作流 通过使用运行时可用的环境变量。 例如,您的步骤可以根据管道名称和当前运行号构造文件名或构建ID。或者您的步骤可以根据资源的状态执行不同的命令。

JFrog Pipelines通过环境变量提供对管道和资源中有用的内部信息的访问。2022世界杯阿根廷预选赛赛程管道还提供了几种简单的方法,可以在管道执行期间将自己的环境变量注入运行时。

页面内容


标准环境变量

所有正在执行的管道都可以使用这些环境变量。

环境变量 描述
体系结构 节点架构,例如x86_64
builder_api_token 用于在步骤执行期间调用管道API的令牌。内部使用,但可供用户访问。
current_script_section onStart / onExecute onComplete等等
JFROG_CLI_BUILD_NAME

如果没有在YML中设置为变量或添加为管道、运行或步骤变量,则将其设置为$pipeline_name。这在积累构建信息时使用。

JFROG_CLI_BUILD_NUMBER

如果没有在YML中设置为变量或添加为管道、运行或步骤变量,则将其设置为$run_number。这在积累构建信息时使用。

JFROG_CLI_BUILD_PROJECT

如果没有在YML中设置为变量或添加为管道、运行或步骤变量,则将其设置为$project_key。这在累积或发布构建信息时使用。

operating_system 运行step的操作系统,例如Ubuntu_20.04
路径 当前执行的运行时环境中PATH的值。
pipeline_name 当前正在执行的管道的名称字符串。
pipelines_api_url API的URL
project_id JFrog pipeline中项目的ID
project_key 项目的关键。如果项目是默认项目,则此项为空。
project_name 项目名称
run_id 运行的内部唯一ID。
run_number 当前正在执行的运行的数目。
running_in_container 如果步骤在容器中运行,则为True。如果在主机上运行,则为False。
shared_workspace

的所有步骤都可以使用的目录路径亲密团体可用于在步骤之间共享文件。

step_ < inputStepName > _statusName

这个环境变量在运行时自动可用,可以在任何步骤中使用。inputStepName是输入步骤的名称。这个环境变量对于获取任何输入步骤的状态都很有用。
例如,请参见条件工作流页面中的using step__statusName。

step_affinity_group 亲和组步骤所属。默认值与步骤名称相同。
step_id 当前执行步骤的内部唯一ID。
step_image_name 用于运行该步骤的Docker镜像的名称。pipelines-docker.jfrog.io / jfrog / pipelines-u20node).
step_image_tag 用于运行该步骤的Docker映像的标记。
step_name 步骤的名称,用YAML指定。
step_node_id 节点的内部唯一ID
step_node_name 用于运行步骤的节点名称(在添加节点时由用户配置)
step_node_pool_name 用于运行该步骤的节点池名称(创建池时配置的用户)。
step_platform 与操作系统相同。
step_runtime 设置为“image”或“host”
step_triggered_by_identity_name 如果是用户触发,则输入用户名。其他的空
step_triggered_by_resource_name 如果由资源触发,则资源的名称。否则,此环境变量为空。
step_triggered_by_step_name 如果是由其他步骤触发,则输入步骤的名称。其他的空
step_type 在YAML字段中指定的步骤类型(例如,“Bash”,“DockerBuild”等)。
step_url 直接链接到步骤

保留的环境变量

这些环境变量具有预定义的值,不能被覆盖。

环境变量 描述
custom_certs_dir 自定义证书的位置。
custom_certs_enabled 说明使用自定义证书。
no_verify_ssl 指示不验证SSL的步骤。
run_created_at 创建运行的时间。
step_build_plane_version 构建平面版本。
step_dependency_state_dir 存储输入/输出依赖项信息的位置。
step_docker_container_name 正在运行该步骤的容器名称。
step_json_path 包含步骤信息的JSON对象的路径。
step_namespace 管道的扩展名称空间.默认是jfrog
step_timeout_seconds 步骤在超时之前可以运行的总秒数。
step_tmp_dir 执行步骤时使用的临时目录。
steplet_id 当前执行的步骤的内部唯一ID。
steplet_number

在运行的上下文中唯一的步长号。有用的矩阵有多个步骤的步骤。

例子
onExecute: - add_run_variables steplet_${steplet_number}_variable=${env1}

用户自定义环境变量

中定义的自定义环境变量配置部分的管道YAML文件。

管道

类中声明环境变量配置部分。这里声明的环境变量可用于管道中的所有步骤。

—名称:my_pipeline配置:environmentVariables: readOnly: env1: value1 env2: value2

步骤

方法中声明环境变量配置步骤在管道内的部分。来自此源的环境变量仅在声明它们的步骤中可用。

步骤:—name: step_1 type: Bash配置:environmentVariables: env1: value1 env2: value2

YAML模式参考

在声明环境变量时,遵循YAML语法约定并正确地引用和转义值以确保pipeline能够正确地解析它们是很重要的。

一般来说,YAML字符串是Unicode的,可以不加引号。然而在使用特殊字符时,需要遵循某些规则。以下字符串需要引号:

  • 以特殊字符开头,例如:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, )
  • 以空白字符开始或结束
  • 看起来像一个数字或布尔值(1231.23真正的

例子

单引号
例子 结果 评论
'这个字符串'使用单引号"

这个字符串'使用单引号'

  • 单引号允许您在字符串中包含几乎任何字符。
  • 单引号不能解析转义码。例如:"\n"作为字符串\n返回。
  • 使用两个单引号()在单引号字符串中包含单引号。
'这个字符串'使用双引号' ' 这个字符串"使用双引号"
'&这个字符串以一个特殊字符开头,需要引号' '&以一个特殊字符开头,需要引号'
双引号
例子 结果 评论

"这个字符串\nis在下一行"

这个字符串
在下一条线上

双引号支持任何字符串和转义序列。

例如:\ n\ \,\"

"这个字符串使用\ tab"

这个字符串使用tab

多行字符串

多行字符串可以使用:

  • 折叠方式:用大于号(>)表示,其中每个换行符转换为空格。
  • 文字样式:用管道(|)表示,以保留换行符。

折叠样式(>)

例子 结果 评论

foo: >

这是一个字符串。

另一个字符串。

一个。

这是一个字符串。另一个。一个。

折叠样式删除行尾字符,并用单行替换双行尾。这对描述很有用。

  • 使用>-如果不希望在末尾附加换行符。

  • 使用>+如果您想在末尾附加一个换行符。

执行:
onExecute:
- >
回声“你好”
回声“世界”

你好世界

文字风格(|)

例子 结果 评论

foo: |

这是第一行。

这是第二行。

这是第三行。

这是第一行。

这是第二行。

这是第三行。

文字样式保留行结束符。这在定义脚本操作时非常有用。

  • 使用|-如果不希望在末尾附加换行符。

  • 使用|+如果您想在末尾附加一个换行符。

执行:
onExecute:
- |
回声“你好”
回声“世界”

你好
世界

转义序列

YAML使用转义序列如下:

  • \ n用来表示一条新线
  • \ t用于表示TAB
  • \ \表示斜杠
  • Bash的风格“\”用于转义作为内容一部分且不应折叠的额外空格
  • 末尾的\用于表示延续标记。这对于将长字符串分成多行而不引入不必要的空白非常有用
例子 结果 评论

“10美元价格:\”

价格:10美元

特殊字符必须用反斜杠转义。

'这个字符串有内部'反刻度' '

这个字符串有内部的'反刻度'

反引号必须被转义,因为它们被shell特殊处理。

'这个字符串有一个反斜杠\\字符'

这个字符串有一个反斜杠\字符


"这个字符串有几个'特殊'字符,可以根据需要进行转义"

这个字符串有几个“特殊”字符
必要时逃跑”

在这个例子中:

  • 双引号将整个字符串括起来。这样做是为了利用YAML扩展\ n转换成换行符。
  • 除了单引号字符外,其他所有字符都使用反斜杠进行转义。
  • 单引号被视为字符,不需要转义。

环境变量配置

除了键值语法之外,还可以在环境变量定义下使用以下属性来增强其配置。以下属性可用于两者中声明的环境变量管道步骤配置部分。

财产 描述 必需的/可选
默认的 环境变量的默认值。 要求

描述 描述环境变量的使用情况。显示在自定义运行配置面板 可选
时可分配给环境变量的值列表在UI中使用自定义运行配置 可选
allowCustom 控件列表之外的自定义值是否允许用户使用.默认值为 可选
管道:—名称:my_pipeline配置:环境变量:readOnly: env1: value1 env2:默认:value1 description: env2描述值:—value1—value2—value3 steps:—名称:my_step类型:Bash配置:环境变量:step_env1:默认:value1描述:步骤env1描述值:—value1—value2—value3 allowCustom: true step_env2: value2执行:onExecute:—echo "test"

当你使用自定义配置触发运行, UI使用YAML文件中的配置来控制用户输入使用自定义配置运行面板:


在YAML中,如果allowCustom设为真正的,您可以为该字段输入任何值为运行定义自己的值。在上面的示例中,您可以为的输入自定义值step_env2,除了已经定义的值之外。请注意,自定义值仅对特定运行可用。




集成

使用集成的步骤可以通过环境变量访问集成的属性。环境变量的形式为:

int_ <集成名称> _ <标记>

例如,您可以访问一个的URL属性Artifactory集成命名myArtifactory通过环境变量:

$ printenv int_myArtifactory_url https://mycompany.com/artifactory/

您还可以通过使用集成的资源访问集成的属性。环境变量的形式为:

Res_ _<集成标签名称>_<标签>

例如,图像资源在其注册表标签。您可以访问Image资源所使用的Artifactory集成的URL模板如下:

$ printenv res_myImage_registry_url https://mycompany.com/artifactory/

有关更多信息,请参见管道集成


2022世界杯阿根廷预选赛赛程

中指定资源的步骤input2022世界杯阿根廷预选赛赛程resources可以通过环境变量访问该资源的属性。环境变量的形式为:

res_ <资源名称> _ <标记>

例如,您可以访问imageName的性质图像资源模板通过环境变量:

$ printenv res_myImage_imageName jfrog.local:5000/alpine37

一些资源维2022世界杯阿根廷预选赛赛程护可以作为环境变量访问的附加属性。这些资源类型包括:

欲了解更多信息,请参阅管道资源2022世界杯阿根廷预选赛赛程

基于资源的状态

中指定的资源中添加自己的属性output2022世界杯阿根廷预选赛赛程resources使用write_output效用函数.这可以用来创建有状态的管道

新附加的属性可以作为表单的环境变量访问res_{资源名称}_{密钥名称}例如,下面的代码将在资源中创建三个属性模板

write_output myImage sport="baseball" equipment="bat" field="diamond"

在步骤中指定资源时inputsource,这些属性可以作为以下环境变量访问:

$ printenv res_myImage_baseball $ printenv res_myImage_equipment bat $ printenv res_myImage_field diamond

有关运行状态的详细信息,请参见创建有状态管道


运行状态

您的管道可以定义自己的环境变量,并将它们添加到管道的运行状态。这些将对管道运行中的所有步骤可用。

使用运行状态管理的实用程序函数将新的环境变量添加到当前运行状态。例如,下面一行在一个步骤的执行块中:

add_run_variables英雄="Superman"反派="Lex Luthor"

将创建两个环境变量,可用于管道运行的当前和所有未来步骤:

英雄超人反派莱克斯·卢瑟

有关运行状态的详细信息,请参见创建有状态管道


管道状态

您的管道可以定义自己的环境变量,并将它们添加到管道状态。这些将适用于该管道的所有运行。

使用用于管道状态管理的实用函数将新的环境变量添加到当前运行状态。例如,下面一行在一个步骤的执行块中:

Add_pipeline_variables动物="狗"蔬菜="胡萝卜"

将创建两个环境变量,可用于定义它们的管道的所有运行:

动物狗蔬菜胡萝卜

有关管道状态的详细信息,请参见创建有状态管道


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