如何在百度上建立网站,上海黑马程序员培训机构地址,wordpress激活邮件,网站个人备案需要什么资料你是否遇到过因环境变量问题导致调试流水线很长时间#xff1f;这篇文章一定能解决你的问题。本文章翻译自博客。欢迎来到“Jenkins CookBook”系列的第一篇博客文章。今天#xff0c;我们专注于有效地使用Jenkins Pipeline环境变量。您将学习如何定义env变量#xff0c;如何…你是否遇到过因环境变量问题导致调试流水线很长时间这篇文章一定能解决你的问题。本文章翻译自博客。欢迎来到“Jenkins CookBook”系列的第一篇博客文章。今天我们专注于有效地使用Jenkins Pipeline环境变量。您将学习如何定义env变量如何更新它们以及如何在布尔表达式中正确使用它们。主要内容列出环境变量读取环境变量设置环境变量将布尔值存储在环境变量中sh在env环境变量中获取输出列出环境变量让我们首先列出所有可用的环境变量。您可以通过两种不同的方法进行操作。您可以${YOUR_JENKINS_HOST}/env-vars.html在Jenkins主服务器上打开页面以获取HTML页面上列出的所有环境变量的列表。另外您可以通过执行printenvshell命令列出所有环境变量。pipeline { agent any stages { stage(Env Variables) { steps { sh printenv } } }}注意使用printenv | sort命令组合来获取环境变量的排序列表可能很有用。读取环境变量您可以在通过env对象的管道步骤中访问环境变量例如env.BUILD_NUMBER将返回当前的内部版本号。您也可以使用简写版本BUILD_NUMBER但是在此变体中这可能会使某些用户感到困惑-它缺少BUILD_NUMBER来自环境变量的上下文。pipeline { agent any stages { stage(Env Variables) { steps { echo The build number is ${env.BUILD_NUMBER} echo You can also use ${BUILD_NUMBER} - ${BUILD_NUMBER} sh echo I can access $BUILD_NUMBER in shell command as well. } } }}设置环境变量可以使用environment { }block 来声明性地设置环境变量必须使用env.VARIABLE_NAME或命令来设置环境变量withEnv([VARIABLE_NAMEvalue]) {}。pipeline { agent any environment { FOO bar } stages { stage(Env Variables) { environment { NAME Alan } steps { echo FOO ${env.FOO} echo NAME ${env.NAME} script { env.TEST_VARIABLE some test value } echo TEST_VARIABLE ${env.TEST_VARIABLE} withEnv([ANOTHER_ENV_VARhere is some value]) { echo ANOTHER_ENV_VAR ${env.ANOTHER_ENV_VAR} } } } }}覆盖环境变量Jenkins Pipeline支持覆盖环境变量。您需要注意一些规则。该withEnv([envvalue]) { }块可以覆盖任何环境变量。使用environment {}块设置的变量不能使用命令式env.VAR value赋值覆盖。命令式env.VAR value分配只能覆盖使用命令式创建的环境变量。这是一个示例性的Jenkinsfile显示了所有三种不同的用例。pipeline { agent any environment { FOO bar NAME Joe } stages { stage(Env Variables) { environment { NAME Alan // overrides pipeline level NAME env variable BUILD_NUMBER 2 // overrides the default BUILD_NUMBER } steps { echo FOO ${env.FOO} // prints FOO bar echo NAME ${env.NAME} // prints NAME Alan echo BUILD_NUMBER ${env.BUILD_NUMBER} // prints BUILD_NUMBER 2 script { env.SOMETHING 1 // creates env.SOMETHING variable } } } stage(Override Variables) { steps { script { env.FOO IT DOES NOT WORK! // it cant override env.FOO declared at the pipeline (or stage) level env.SOMETHING 2 // it can override env variable created imperatively } echo FOO ${env.FOO} // prints FOO bar echo SOMETHING ${env.SOMETHING} // prints SOMETHING 2 withEnv([FOOfoobar]) { // it can override any env variable echo FOO ${env.FOO} // prints FOO foobar } withEnv([BUILD_NUMBER1]) { echo BUILD_NUMBER ${env.BUILD_NUMBER} // prints BUILD_NUMBER 1 } } } }}将布尔值存储在环境变量中关于使用环境变量存在一种普遍的误解。存储为环境变量的每个值都将转换为String。当您存储布尔false值时它将转换为false。如果要在布尔表达式中正确使用该值则需要调用false.toBoolean()method。pipeline { agent any environment { IS_BOOLEAN false } stages { stage(Env Variables) { steps { script { if (env.IS_BOOLEAN) { echo You can see this message, because false String evaluates to Boolean.TRUE value } if (env.IS_BOOLEAN.toBoolean() false) { echo You can see this message, because false.toBoolean() returns Boolean.FALSE value } } } } }}使用SH捕获变量您还可以将shell命令的输出捕获为环境变量。请记住您需要使用sh(script: cmd, returnStdout:true)格式来强制sh步骤返回输出以便可以捕获它并将其存储在变量中。pipeline { agent any environment { LS ${sh(script:ls -lah, returnStdout: true)} } stages { stage(Env Variables) { steps { echo LS ${env.LS} } } }}