使用 init.groovy 向 Jenkins 添加全局密码
Adding Global Password to Jenkins with init.groovy
如何通过在启动时运行的 init.groovy 向 Jenkins 添加全局密码?
明确地说,在“管理 Jenkins”->“配置 Jenkins”页面中,有一个标题为 "Global Passwords" 的部分。我想在 Jenkins 启动期间通过 Groovy 代码在该部分中添加条目。
我正在尝试使用 init.groovy. I need to add global passwords through the EnvInject plugin 通过 groovy 代码配置我的 jenkins 环境。我可以使用以下代码成功地将路径添加到同一插件的文件中:
def instance = Jenkins.getInstance()
DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties =
instance.getGlobalNodeProperties();
globalNodeProperties.add(
new EnvInjectNodeProperty(false, "/var/lib/jenkins/secret.properties")
);
但是,我无法理解以编程方式添加全局密码所需的机制。
我没试过这个插件,但是有一个 class : EnvInjectGlobalPasswordEntry
我想可能是这样的:
globalNodeProperties.add(
new EnvInjectGlobalPasswordEntry("pass-name", "the-password")
);
下面是应该有效的代码示例。似乎 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();
如何通过在启动时运行的 init.groovy 向 Jenkins 添加全局密码?
明确地说,在“管理 Jenkins”->“配置 Jenkins”页面中,有一个标题为 "Global Passwords" 的部分。我想在 Jenkins 启动期间通过 Groovy 代码在该部分中添加条目。
我正在尝试使用 init.groovy. I need to add global passwords through the EnvInject plugin 通过 groovy 代码配置我的 jenkins 环境。我可以使用以下代码成功地将路径添加到同一插件的文件中:
def instance = Jenkins.getInstance()
DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties =
instance.getGlobalNodeProperties();
globalNodeProperties.add(
new EnvInjectNodeProperty(false, "/var/lib/jenkins/secret.properties")
);
但是,我无法理解以编程方式添加全局密码所需的机制。
我没试过这个插件,但是有一个 class : EnvInjectGlobalPasswordEntry
我想可能是这样的:
globalNodeProperties.add(
new EnvInjectGlobalPasswordEntry("pass-name", "the-password")
);
下面是应该有效的代码示例。似乎 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();