我使用CloudBees Folders Plugin嵌套文件夹和Credentials Plugin来管理不同管道作业的秘密。假设我有一个像这样的Jenkins文件夹结构。
folder1/
folder2/
job1
文件夹插件允许我将凭据域和凭据范围限定到文件夹,以便只有这些文件夹中的作业才能访问这些凭据。
我可以通过用户界面执行此操作,但我们经常轮换这些凭据,并希望自动执行部分内容。
我们想到这样做的一种方法是使用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-providers - 列出凭据提供程序
java -jar jenkins-cli.jar -s http://localhost:8080/ 列表的凭证的提供
列出凭据提供程序
Jenkins全球范围的 STORE 由我查看source code确定,显示为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
运行以下内容:
✗ java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials system::system::jenkins --username admin --password password
现在,我正在尝试列出文件夹的一些凭据,并且不知道如何获取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
但是接收错误:指定的解析程序文件夹:: items :: folder1无法唯一标识:
如何确定文件夹的STORE
,以便我可以使用create-credentials-by-xml
或其他命令自动执行这些命令?或者,我如何使用脚本支持执行Groovy来执行此操作?
答案 0 :(得分:4)
我相信你几乎就在那里。
凭据商店ID格式为Provider::Resolver::ContextPath
Provider
命令找到 list-credentials-providers
名称。您在这里正确使用了folder
。
Resolver
命令找到 list-credentials-context-resolvers
名称。我相信这是你打错字的地方。它应该是item
而不是items
。
ContextPath
依赖Resolver
。在system
的情况下,它只能是jenkins
。在folder
的情况下,它是文件夹的完整路径,例如/folder1/subfolder1
。
因此,上一个命令中的STORE参数应为folder::item::/folder1