You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取YAML配置文件并在Jenkins流水线中设置环境变量的最优方案

Jenkins流水线读取YAML配置并设置环境变量的最佳实现方案

针对给定的YAML配置,要在Jenkins流水线中提取amps-ml.models[0].inference节点下的所有键值对并设置为环境变量,以下是两种可靠的实现方案:

方案一:使用Pipeline Utility Steps插件(推荐,Jenkins官方生态工具)

  • 前提:确保Jenkins已安装Pipeline Utility Steps插件(可在Jenkins插件市场搜索安装)
  • 实现步骤:
    1. 修正YAML语法错误:原配置中endpoint_instance_count: 1,末尾的逗号需删除,否则YAML解析会失败
    2. 在Jenkinsfile中编写流水线代码,通过readYAML读取配置文件,遍历inference节点的键值对并设置环境变量
pipeline {
    agent any

    stages {
        stage('Load YAML and set env vars') {
            steps {
                script {
                    // 读取YAML配置文件(假设配置文件名为config.yaml,存放在代码仓库根目录)
                    def config = readYAML file: 'config.yaml'
                    // 定位到目标inference节点(这里取第一个model的inference配置)
                    def inferenceConfig = config['amps-ml']['models'][0]['inference']
                    
                    // 遍历键值对,设置为环境变量
                    inferenceConfig.each { key, value ->
                        // 将键名转为大写(符合环境变量命名习惯),设置环境变量
                        env[key.toUpperCase()] = value.toString()
                    }
                }
            }
        }

        stage('Verify env vars') {
            steps {
                script {
                    // 打印所有已设置的环境变量,验证结果
                    sh 'echo $IMAGE'
                    sh 'echo $DATA'
                    sh 'echo $ENDPOINT'
                    // 其他变量可同理打印
                }
            }
        }
    }
}

方案二:使用Python脚本读取(无插件依赖)

如果无法安装Jenkins插件,可通过Python脚本解析YAML并生成环境变量导出语句,在流水线中执行:

  • 前提:Jenkins代理节点已安装Python3和pyyaml库(可通过pip install pyyaml安装)
  • 实现步骤:
    1. 同样先修正YAML的语法错误
    2. 创建Python脚本(比如load_yaml_env.py):
import yaml

with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)

inference_config = config['amps-ml']['models'][0]['inference']

# 生成export语句,输出到stdout
for key, value in inference_config.items():
    # 转为大写键名,值转为字符串处理
    print(f'export {key.upper()}="{str(value)}"')
  1. 在Jenkinsfile中执行脚本并加载环境变量:
pipeline {
    agent any

    stages {
        stage('Load YAML and set env vars') {
            steps {
                script {
                    // 执行Python脚本,生成环境变量导出命令并source
                    sh '''
                        python3 load_yaml_env.py > env_vars.sh
                        source env_vars.sh
                        # 将环境变量注入到Jenkins环境中(传递到后续步骤)
                        export $(cat env_vars.sh | xargs)
                    '''
                }
            }
        }

        stage('Verify env vars') {
            steps {
                sh 'echo $IMAGE'
                sh 'echo $ENDPOINT_INSTANCE_TYPE'
            }
        }
    }
}

注意事项

  • 若配置中有多个model,可根据name字段筛选目标model(比如通过find方法找到name: app-sample的model)
  • 环境变量名建议转为大写,符合Unix/Linux环境变量的命名规范
  • 确保Jenkins代理节点有读取YAML配置文件的权限

内容的提问来源于stack exchange,提问作者Riley Hun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:45:43