使用环境变量
CIFile 中除了能够直接通过命令行调用环境变量外,调用 stage、task、artifacts、temps、cache 等参数时也支持使用环境变量。
环境变量定义
在CIFile中,可以使用 env 来定义环境变量,环境变量目前支持 string
、 select
、multi-select
三种类型。
env:
USERNAME: myname
在环境变量中定义描述信息:
env:
USERNAME:
value: myname
desc: mydescription
使用加密值定义环境变量:
env:
USERNAME: myname
PASSWD:
secret: xxxxyyyzz #the string encrypted by CODING-CI public key
环境变量可以定义只读属性,防止启动时误修改:
env:
test_readonly:
value: my_value
desc: 测试只读属性
readonly: true
环境变量支持定义单选。设定后在启动流水线时会被要求选择一个值作为启动参数:
test_select:
value: test1 # 默认值
type: select # 类型
desc: 测试单选 # 描述信息
option: test1;test2;test3;test4; # 备选值,用英文分号分隔
环境变量支持定义多选,可以在界面启动时选择多个值启动:
test_multi_select:
value: test1;test2 # 默认值,多个值以分号连接
type: multi-select # 类型
desc: test_multi_select # 描述信息
option: test1;test2;test3;test4; # 备选值,用英文分号分隔
定义其他环境变量
环境变量还支持定义其他环境变量:
env:
current_user: $QCI_TRIGGER
my_repo: ${QCI_WORKSPACE}/git
my_code: ${my_repo}/code
将 label 定义为环境变量
当需要动态指定 label 时,可以将 label 的值设为环境变量。
worker:
label: ${label}
⚠️ label 环境变量只支持在 CIFile 中、任务配置界面中、以及启动流水线时所添加的环境变量;不支持定义流水线运行过程中所动态生成的环境变量。
在 stage 和 task 参数中使用环境变量
在 CIFile 中的 stage 和 task 参数中可以使用环境变量做为名称,例如:
stages:
- stage: 编译${COMPONENT}
cmds:
- echo 'hello CODING-CI!'
artifacts: # 上传文件到QCI
- templates/*
- stage: deploy
tasks:
- task: deploy${COMPONENT}
if: $QCI_TRIGGER_TYPE = "master"
cmds:
- echo "CI deploy"
启动时会替换相应的环境变量 COMPONENT
。
⚠️ 此部分环境变量只支持在 CIFile 中、任务配置界面中、以及启动流水线时所添加的环境变量;不支持定义流水线运行过程中所动态生成的环境变量。
在 prompt 中使用环境变量
prompt 关键字中的 msg 和 to 支持环境变量:
- prompt: #the stage will hold until recerver confirm
- msg: Should go on?
to: ["${QCI_TRIGGER}", reeduszhang, willionpan, damoncheng]
⚠️ prompt 中的环境变量只支持在 CIFile 中、任务配置界面中、以及启动流水线时所添加的环境变量;不支持定义流水线运行过程中所动态生成的环境变量。
注意事项
在 yaml 语法中,布尔值用 true 和 false 表示,可以通过添加引号的方式转化为 string 类型,或者使用两个感叹号(!!)的方法强制指定数据类型。
例如:
env:
value_1: 'true'
value_2: !!str true
在 CIFile 中,浮点数默认识别成整型,可以通过添加引号的方式转化数据类型。
例如:
env:
value_1: '1.0'
value_2: !!str 1.0
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。