全部产品

环境变量

定义环境变量是实现流水线过程定制化的一种常见方法,可以在执行过程的任何阶段使用这些变量。

环境变量的来源

环境变量可以来自以下几种途径:

1. 内置环境变量

环境变量名

环境变量名

PIPELINE_ID

流水线 ID

BUILD_NUMBER

流水线的运行编号,从1开始,按自然数自增

PIPELINE_NAME

流水线名称,比如“前端项目发布”

PROJECT_DIR

运行命令的工作目录,比如”/root/workspace/1084-abc_docker-08191_b0wE”

DATETIME

当前时间戳,比如2017-06-22-23-26-33

TIMESTAMP

当前时间戳,比如1581581273232

如果流水线配置代码源,则会有以下内置环境变量:

CI_COMMIT_REF_NAME

代码库的分支名或者 Tag 名(根据用户运行时选择),比如 master or V1.0

CI_COMMIT_TITLE

最后一次提交的提交信息

CI_COMMIT_SHA

最后一次提交的代码版本的 commit ID:如2bfb63d779e3648c91950f82d374a25784cdabaf

CI_COMMIT_ID

最后一次提交的代码版本的 8 位 commit ID

2. 流水线运行参数

在流水线编辑页面,可以定义流水线的环境变量,在流水线运行时,可以将环境变量执行过程的任何阶段使用这些变量。

在添加全局变量的时候,选择 “运行时设置” 选项, 可以在流水线运行时进行参数动态配置

3. 私密配置项

在应用构建中,通常会需要一些配置项,类似于

  1. 依赖系统的 URL

  2. 数据库链接用户名密码

配置项会涉及一些私密信息,不适合公开给他人查看。飞流提供了私密模式的全局变量,可以用于保存私密配置。

在流水线编辑页面,可以定义流水线的环境变量,在新建变量时,选择将变量设置成为 “私密模式”,对应的变量可以作为私密配置项。

对于“私密模式”的全局参数,对应的参数值将会加密不对外显示,并且在对应的执行日志中,也不会显示。

使用环境变量

在你需要使用环境变量的地方通过${name}引用您需要的环境变量。如下图,将配置文件a.conf中的 key 的参数值,从”123”更改为变量名为abc的环境变量。

使用环境变量

部署组使用环境变量

Flow 经过优化后,新的主机部署不会再对环境变量进行默认编码,如果你的环境变量中不包含特殊字符(空格、引号、分号等),您可以在部署脚本中通过${key}使用环境变量,无需再进行 Base 64 解码处理。但是如果你的环境变量中包含特殊字符,您将无法正常使用您的环境变量,可参考以下文档进行处理:主机部署—环境变量包含特殊字符

镜像构建参数使用环境变量

当你在镜像构建时,需要将流水线的环境变量作为构建参数时,需要在镜像构建配置的构建参数中,将您的环境变量赋给您的构建参数,如下图所示:

镜像构建参数使用环境变量1

在 Dockerfile 中,通过ARG argName完成变量引用,如下图所示:

镜像构建参数使用环境变量2

配置文件中的参数使用环境变量

如果您的配置文件中某个参数,需要通过环境变量进行修改,例如:代码库配置文件a.conf中有参数username,希望用流水线的环境变量进行替换。可修改配置文件a.conf如下,其中将abc的参数值配置在流水线的环境变量中:

配置文件中的参数使用环境变量1

在流水线中选择以下工具,并填写配置文件的源文件路径;目标文件路径非必填,如果填写了目标文件路径,则会生成一个新的配置文件,不填写目标文件路径则直接修改源文件。

配置文件中的参数使用环境变量2配置文件中的参数使用环境变量3

查看修改效果如下,a.conf中的username被修改为b.conf中的my_name_is_hanmeimei。注意:由于 Flow 相同任务共享工作区,因此 修改配置文件变量步骤 需要和您后续 使用配置文件的步骤 放在同一任务节点中。

配置文件中的参数使用环境变量4