将 Jenkins 变量传递给行为命令行参数
Passing a Jenkins variable to behave command line argument
我正在尝试使用 jenkins 运行 一个 python 行为回归测试包。
我有一个设置变量的脚本块,然后我使用shell命令来证明变量设置成功。
但是,当我 运行 我的 python behave 命令时,变量没有被成功传递。
stage('End to end tests') {
steps {
script{
if(params.containsKey("envname")){
env_e2e = "https://url" + params.envname + ".com"
}else{
env_e2e = "https://url.com"
}
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'ui_test_user',
usernameVariable: 'UI_USERNAME', passwordVariable: 'UI_PASSWORD']]) {
sh 'sudo --preserve-env scl enable rh-python36 "cp krb5.conf /etc/krb5.conf"'
sh 'sudo --preserve-env scl enable rh-python36 "echo ${UI_PASSWORD} | kinit ${UI_USERNAME}@****.com"'
}
sh """
echo "my env ${env_e2e}"
"""
sh 'sudo --preserve-env scl enable rh-python36 "python -m pip install --force-reinstall dist/*.whl"'
sh 'sudo --preserve-env scl enable rh-python36 "behave -D ENV_E2E=${env_e2e} --tags=-skip --junit"'
}
}
post {
always {
archive "reports/*"
junit 'reports/*.xml'
}
}
}
ENV_E2E 始终解析为空白
在我的 python 行为框架中,我有这个 environment.py 文件
def before_all(context):
env_var = context.config.userdata['ENV_E2E']
logging.info(env_var)
print(len(env_var))
context.pythonlib = PythonLib(service_endpoint_url=env_var)
这只是 returns 运行 时的一个错误,env_vars len = 0 并且 service_endpoint 格式不正确,因为它期望 http/https
感谢您的想法
原来你需要使用三重双引号字符串,"""
sh """
sudo --preserve-env scl enable rh-python36 "behave -D ENV_E2E=${env_e2e} --tags=-skip --junit"
"""
我正在尝试使用 jenkins 运行 一个 python 行为回归测试包。
我有一个设置变量的脚本块,然后我使用shell命令来证明变量设置成功。
但是,当我 运行 我的 python behave 命令时,变量没有被成功传递。
stage('End to end tests') {
steps {
script{
if(params.containsKey("envname")){
env_e2e = "https://url" + params.envname + ".com"
}else{
env_e2e = "https://url.com"
}
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'ui_test_user',
usernameVariable: 'UI_USERNAME', passwordVariable: 'UI_PASSWORD']]) {
sh 'sudo --preserve-env scl enable rh-python36 "cp krb5.conf /etc/krb5.conf"'
sh 'sudo --preserve-env scl enable rh-python36 "echo ${UI_PASSWORD} | kinit ${UI_USERNAME}@****.com"'
}
sh """
echo "my env ${env_e2e}"
"""
sh 'sudo --preserve-env scl enable rh-python36 "python -m pip install --force-reinstall dist/*.whl"'
sh 'sudo --preserve-env scl enable rh-python36 "behave -D ENV_E2E=${env_e2e} --tags=-skip --junit"'
}
}
post {
always {
archive "reports/*"
junit 'reports/*.xml'
}
}
}
ENV_E2E 始终解析为空白
在我的 python 行为框架中,我有这个 environment.py 文件
def before_all(context):
env_var = context.config.userdata['ENV_E2E']
logging.info(env_var)
print(len(env_var))
context.pythonlib = PythonLib(service_endpoint_url=env_var)
这只是 returns 运行 时的一个错误,env_vars len = 0 并且 service_endpoint 格式不正确,因为它期望 http/https
感谢您的想法
原来你需要使用三重双引号字符串,"""
sh """
sudo --preserve-env scl enable rh-python36 "behave -D ENV_E2E=${env_e2e} --tags=-skip --junit"
"""