read file

cnb:read-file

读取文件内容解析输出给后续任务。

##[set-output key=value] 指令输出变量更便捷,但会将内容输出到日志,不适用于敏感信息。

对于事先确定的敏感信息可以用 imports 导入,对于构建过程中生成的敏感信息,可写入文件,用该内置任务读取。

imports 只支持远端仓库存在的文件,该内置任务只支持读取本地存在的文件。

文件类型通过后缀判断。目前支持 json、 yml(yaml)、 纯文本(key=value结构)。

# 适用事件

所有事件

# 参数

# filePath

  • type: String
  • required: true

本地文件路径

# 输出结果

{
  // 读到的对象
}

# 配置样例

将一些后续任务需要的变量写入文件,用该内置任务读取文件导出为环境变量,供后续任务使用。

myJson.json

{
  "myVar": "myVar",
  "deep": {
    "myVar": "myVar in deep"
  },
  "deepWithEnvKey": {
    "myVar": "myVar in deepWithEnvKey"
  }
}
# cnb.yml
main:
  push:
    - env:
        myKey: deepWithEnvKey
      stages:
        - name: write env file
          script: echo "write env to myJson.json"
        - name: export env
          type: cnb:read-file
          options:
            filePath: myJson.json
          exports:
            myVar: ENV_MY_VAR
            deep.myVar: ENV_DEEP_MY_VAR #指定多级的key
            $myKey.myVar: ENV_ENV_KEY_MY_VAR #通过环境变量指定获取的key
        - name: echo env
          script:
            - echo $ENV_MY_VAR
            - echo $ENV_DEEP_MY_VAR
            - echo $ENV_ENV_KEY_MY_VAR