如何通过启动时运行的init.groovy向Jenkins添加全局密码?
要明确,在Manage Jenkins中 - >配置Jenkins页面,有一个标题为“全局密码”的部分。我希望在Jenkins启动期间通过Groovy代码添加该部分中的条目。
我正在尝试使用init.groovy通过groovy代码来配置我的jenkins环境。我需要通过EnvInject plugin添加全局密码。我可以使用以下代码成功为同一插件添加路径:
def instance = Jenkins.getInstance()
DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties =
instance.getGlobalNodeProperties();
globalNodeProperties.add(
new EnvInjectNodeProperty(false, "/var/lib/jenkins/secret.properties")
);
但是,我无法理解以编程方式添加全局密码所需的机制。
答案 0 :(得分:2)
以下是应该有效的代码示例。似乎save()方法也将它添加到GlobalNodeProperties,因此您不必手动添加到该集合。
import jenkins.model.*
import hudson.util.*
import hudson.slaves.NodeProperty
import hudson.slaves.NodePropertyDescriptor
import org.jenkinsci.plugins.envinject.*
def instance = Jenkins.getInstance()
DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties
= instance.getGlobalNodeProperties();
envInjectNodeProperty= new EnvInjectNodeProperty(false, "/var/lib/jenkins/secret.properties"
propDescriptor = envInjectNodeProperty.getDescriptor()
//password entry
def passEntry = new EnvInjectGlobalPasswordEntry("some_username", "password")
//password entries list, add you global password here
List<EnvInjectGlobalPasswordEntry> envInjectGlobalPasswordEntriesList= [passEntry];
propDescriptor.envInjectGlobalPasswordEntries =
envInjectGlobalPasswordEntriesList.toArray(
new EnvInjectGlobalPasswordEntry[envInjectGlobalPasswordEntriesList.size()]
);
propDescriptor.save();
答案 1 :(得分:0)
我没有尝试过此插件,但有一个类:EnvInjectGlobalPasswordEntry
我猜它可能是这样的:
globalNodeProperties.add(
new EnvInjectGlobalPasswordEntry("pass-name", "the-password")
);