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

如何获取Jenkinsfile中的参数值并传入Python脚本中使用?

解决方案

Jenkins 中定义的构建参数无需特殊模块读取,会自动暴露到构建任务的运行环境中,常用的传递给 Python 脚本的方式有两种:

方法1:通过环境变量传递(推荐)

这种方式无需处理参数转义问题,适配带空格、特殊字符的参数场景。

修改Jenkinsfile

在执行Python脚本的步骤中通过withEnv将构建参数注入到环境变量:

pipeline {
    agent any
    parameters {
        // 原有参数定义保持不变
        string(name: 'INSTANCETYPE', defaultValue: 't2.micro', description: 'e.g. t2.micro')
        string(name: 'PR', defaultValue: '', description: 'Project')
        string(name: 'OWNER', defaultValue: '', description: 'Owner for instance')
        string(name: 'OS', defaultValue: '', description: 'Operative System e.g REDHAT')       
    }
    stages {
        stage('创建EC2实例') {
            steps {
                withEnv([
                    "INSTANCETYPE=${params.INSTANCETYPE}",
                    "PR=${params.PR}",
                    "OWNER=${params.OWNER}",
                    "OS=${params.OS}"
                ]) {
                    sh 'python3 test.py'
                }
            }
        }
    }
}

修改Python脚本

通过Python内置的os模块读取环境变量即可:

import os
import boto3

# 你原有创建实例的代码保持不变,这里省略
# instances = ec2.create_instances(...)

# 读取环境变量中的Jenkins参数
instancetype = os.getenv('INSTANCETYPE')
pr = os.getenv('PR')
owner = os.getenv('OWNER')
os_type = os.getenv('OS')

ec2.create_tags(
Resources=[
    instances[0].id,
],
Tags=[
  {
    'Key': 'Instance',
    'Value': instancetype
  },
  {
    'Key': 'PR',
    'Value': pr
  },
  {
    'Key': 'Owner_Instance',
    'Value': owner
  },
  {
    'Key': 'Operative_System',
    'Value': os_type
  },
]
)

方法2:通过命令行参数传递

直接在调用Python脚本时将参数作为命令行入参传入:

Jenkinsfile修改

stage('创建EC2实例') {
    steps {
        sh "python3 test.py '${params.INSTANCETYPE}' '${params.PR}' '${params.OWNER}' '${params.OS}'"
    }
}

Python脚本修改

通过内置的sys模块读取命令行参数:

import sys
import boto3

# 按顺序读取命令行入参,sys.argv[0]为脚本本身名称
instancetype = sys.argv[1]
pr = sys.argv[2]
owner = sys.argv[3]
os_type = sys.argv[4]

# 打标签逻辑和方法1一致

注意事项

  • 若参数包含空格、引号等特殊字符,优先使用环境变量的传递方式,避免命令行转义错误
  • 可以在Python脚本中添加参数非空校验,避免参数遗漏导致的打标异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:03