0

如何通过启动时运行的 init.groovy 向 Jenkins 添加全局密码?

需要明确的是,在 Manage Jenkins -> Configure Jenkins 页面中,有一个标题为“全局密码”的部分。我想在 Jenkins 启动期间通过 Groovy 代码在该部分添加条目。

我正在尝试使用 init.groovy 通过 groovy 代码配置我的 jenkins环境。我需要通过EnvInject 插件添加全局密码。我可以使用以下代码成功地将路径添加到同一插件的文件中:

def instance = Jenkins.getInstance()


DescribableList<NodeProperty<?>, NodePropertyDescriptor> globalNodeProperties = 
    instance.getGlobalNodeProperties();

globalNodeProperties.add(
    new EnvInjectNodeProperty(false, "/var/lib/jenkins/secret.properties")
);

但是,我无法理解以编程方式添加全局密码所需的机制。

4

2 回答 2

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();
于 2017-06-07T21:37:06.500 回答
0

https://github.com/jenkinsci/envinject-plugin/tree/master/src/main/java/org/jenkinsci/plugins/envinject

我没有尝试这个插件,但是有一个类:EnvInjectGlobalPasswordEntry

我想可能是这样的:

globalNodeProperties.add(
    new EnvInjectGlobalPasswordEntry("pass-name", "the-password")
);
于 2017-06-07T09:47:17.540 回答