variables - 詹金斯,全球变量
问题描述
有以下代码可以正常工作(成功添加全局变量),但在管道中执行此代码的结果总是 FAILED。我无法使用 try-catch 捕获错误 - 没有任何内容输出到管道控制台。如果我用def做代码(行被注释掉),FAILED不会发生(管道是绿色的),但是代码不起作用(变量没有添加。我如何发现错误或确保管道没有不失败?
import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.*
try {
/*
Jenkins instance = Jenkins.getInstance()
//jenkins = Jenkins.instance //this need script approve
def globalNodeProperties = instance.getGlobalNodeProperties()
def envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
def newEnvVarsNodeProperty = null
def envVars = null
*/
instance = Jenkins.getInstance()
globalNodeProperties = instance.getGlobalNodeProperties()
envVarsNodePropertyList = globalNodeProperties.getAll(EnvironmentVariablesNodeProperty.class)
newEnvVarsNodeProperty = null
envVars = null
if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
newEnvVarsNodeProperty = new EnvironmentVariablesNodeProperty();
globalNodeProperties.add(newEnvVarsNodeProperty)
envVars = newEnvVarsNodeProperty.getEnvVars()
} else {
envVars = envVarsNodePropertyList.get(0).getEnvVars()
}
} catch(Exception ex) {
println("Exception error: ${ex}")
}
envVars.put("sample_var", "Sample Groovy Global Var")
instance.save()
解决方案
请检查此(功能)代码(它也不起作用):
import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.*
@NonCPS
def add_global_var() {
instance = Jenkins.getInstance()
globalNodeProperties = instance.getGlobalNodeProperties()
envVarsNodePropertyList = globalNodeProperties.getAll(EnvironmentVariablesNodeProperty.class)
newEnvVarsNodeProperty = null
envVars = null
if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
newEnvVarsNodeProperty = new EnvironmentVariablesNodeProperty();
globalNodeProperties.add(newEnvVarsNodeProperty)
envVars = newEnvVarsNodeProperty.getEnvVars()
} else {
envVars = envVarsNodePropertyList.get(0).getEnvVars()
}
envVars.put("snapshot_id", "Sample Groovy Global Var 4")
instance.save()
}
pipeline {
agent { node { label 'slave' } }
stages {
stage('Check global var') {
steps {
add_global_var()
}
}
}
}
推荐阅读
- vb.net - 如何从数据表中获取特定列来填充构造函数?
- qt - qt.qpa.plugin: 无法在“”中加载 Qt 平台插件“wayland”,即使它已找到
- java - 如何从 Java 中的 List 中获取最新的更新值?
- django - 如何在管理员的 Django 默认用户页面中添加日期和时间列
- java - 当我从活动中调用片段时,Android 应用程序每秒崩溃一次?
- r - 在同一张图表上绘制具有不同比例的两个变量
- vue.js - 具有自定义字段的 FullCalendar 和 ICalendar 提要
- azure - 使用 Rest API 根据标签获取 Azure 资源详细信息
- excel - 单元格的条件格式以检查它们是否相等
- java - 无法在字符串响应中显示“ü”