如何通过Jenkinsfile向OpenShift传递MAVEN_OPTS环境变量
解决方案
你之前的写法失效核心原因是Jenkins OpenShift插件的openshift.newApp方法要求传入独立拆分的参数列表,把所有参数拼接为单个字符串会被插件错误解析,导致环境变量配置不生效。这里提供两种可行实现方案:
方案1:newApp时直接正确传递环境变量
将参数拆分为独立的字符串传入,--env参数和变量值分开写:
openshift.newApp( '--image-stream=openshift/java:11~https://github.com/filip123go/Simplest-Spring-Boot-Hello-World.git', '--env', 'MAVEN_OPTS=-Dhttps.protocols=TLSv1.2' )
方案2:创建应用后显式设置构建配置环境变量(更稳妥,和你已知的oc命令逻辑完全对应)
创建应用后直接调用插件的set env方法配置构建配置的环境变量,避免参数解析问题:
openshift.newApp('--image-stream=openshift/java:11~https://github.com/filip123go/Simplest-Spring-Boot-Hello-World.git') // 对应你已知的oc set env bc命令 openshift.set('env', 'bc/simplest-spring-boot-hello-world', 'MAVEN_OPTS=-Dhttps.protocols=TLSv1.2')
完整修改后的Pipeline片段参考
pipeline { agent any tools { maven 'maven381' jdk 'JDK904' oc 'oc' } parameters { string(name:'CLUSTER_NAME',defaultValue:'openshift-cluster',description:'集群命名空间') string(name:'PROJECT_NAME',defaultValue:'etias-sword-dev',description:'集群项目名称') } stages { stage('Build') { steps { script { openshift.withCluster(CLUSTER_NAME) { openshift.withProject(PROJECT_NAME) { // 采用方案2实现,兼容性更好 openshift.newApp('--image-stream=openshift/java:11~https://github.com/filip123go/Simplest-Spring-Boot-Hello-World.git') openshift.set('env', 'bc/simplest-spring-boot-hello-world', 'MAVEN_OPTS=-Dhttps.protocols=TLSv1.2') } } } } } } }
内容的提问来源于stack exchange,提问作者Filip123go
相关产品推荐
相关产品推荐

