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

时间:2017-03-22 17:51:28

标签: jenkins jenkins-plugins jenkins-pipeline

我使用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

结果:results of CLI command 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

结果: results of CLI command list-credentials

现在,我正在尝试列出文件夹的一些凭据,并且不知道如何获取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无法唯一标识

error when running trying to run list-credentials for folder

如何确定文件夹的STORE,以便我可以使用create-credentials-by-xml或其他命令自动执行这些命令?或者,我如何使用脚本支持执行Groovy来执行此操作?

1 个答案:

答案 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