确定文件夹的"存储ID"以使用CLI上载和列出凭据

mko*_*bit 5 jenkins jenkins-plugins jenkins-pipeline

我正在使用带有嵌套文件夹的CloudBees文件夹插件和用于管理不同管道作业的秘密的Credentials插件.假设我有一个像这样的Jenkins文件夹结构.

folder1/
    folder2/
        job1
Run Code Online (Sandbox Code Playgroud)

文件夹插件允许我将凭据域和凭据范围限定到文件夹,以便只有这些文件夹中的作业才能访问这些凭据.

我可以通过UI执行此操作,但我们经常轮换这些凭据并希望自动执行部分操作.

我们想到这样做的一种方法是使用Jenkins CLI.

这里的凭证插件提供了各种不同的命令.例如:

list-credentials - 列出特定商店中的凭据

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials STORE

列出特定商店中的凭据

商店:商店ID


list-credentials-context-resolvers - 列出凭据上下文解析器

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-context-resolvers

列出凭据上下文解析器


list-credentials-providers - 列出凭据提供程序

java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-providers

列出凭据提供程序


Jenkins全局范围的存储由我查看源代码确定,它显示了它system::system::jenkins.

如果我运行一些命令,我​​可以开始提取一些信息:

? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials-context-resolvers --username admin --password password
Run Code Online (Sandbox Code Playgroud)

结果是: CLI命令list-credentials-context-resolvers的结果

运行以下内容:

? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials system::system::jenkins --username admin --password password
Run Code Online (Sandbox Code Playgroud)

结果是: CLI命令列表凭据的结果

现在,我正在尝试列出文件夹的一些凭据,并且不知道如何获取STORE(文档指示的商店ID).

我试过了

? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials folder::items::folder1 --username admin --password password
Run Code Online (Sandbox Code Playgroud)

但是接收错误:无法唯一标识指定的解析程序文件夹:: items :: folder1:

运行尝试运行文件夹的列表凭据时出错

如何确定STORE文件夹,以便我可以使用create-credentials-by-xml或其他命令自动执行它们?或者,我如何使用脚本支持执行Groovy呢?

due*_*mir 8

我相信你快到了。

凭证存储 ID 格式为 Provider::Resolver::ContextPath

Provider名称可以通过list-credentials-providers命令找到。你folder在这里正确使用。

Resolver名称可以通过list-credentials-context-resolvers命令找到。我相信这是你打错字的地方。应该item不是items

ContextPathResolver依赖的。在system它的情况下只能是jenkins。在这种情况下,folder它是文件夹的完整路径,例如/folder1/subfolder1.

因此,您最后一个命令中的 STORE 参数应该是 folder::item::/folder1