我想通过ansible创建jenkins凭据

我想通过ansible创建jenkins凭据,jenkins,ansible,Jenkins,Ansible,我正在使用ansible组装一台开发人员机器。在那台机器里我正在安装詹金斯 我通过ansible为jenkins创造了工作机会: - shell: "java -jar {{ jenkins.cli_jar }} -s {{ jenkins.server }} create-job \ {{ item.name }} < {{ jenkins.jobs_dir }}/{{ item.xml_file }}" with_items: "jenkins.jobs" -shel

我正在使用ansible组装一台开发人员机器。在那台机器里我正在安装詹金斯

我通过ansible为jenkins创造了工作机会:

- shell: "java -jar {{ jenkins.cli_jar }} -s {{ jenkins.server }} create-job \
      {{ item.name }} < {{ jenkins.jobs_dir }}/{{ item.xml_file }}"
  with_items: "jenkins.jobs"
-shell:java-jar{{{jenkins.cli_jar}}-s{{{jenkins.server}创建作业\
{{item.name}<{{jenkins.jobs_dir}}/{{item.xml_file}”
带_项:“詹金斯.乔布斯”
并通过cli等安装插件

但是现在我缺少了这些作业的ssh凭据;我只需要一个用户为“jenkins”的ssh凭据,它使用“fromthejenkins master~/.ssh”

我所说的就是这种类型的凭证:


可能是一个groovy脚本,但我还没有找到很多关于它的信息。感谢您的帮助。

Jenkins凭据插件不允许使用API()创建凭据

一个可行的解决方案是使用首选浏览器和JMeter代理或Selenium IDE记录凭证创建。并使用JMeter CLI重放它,或将Selenium录制的测试保存为groovy脚本


您还可以查看

您可以在jenkins运行方式如下的计算机上的命令行中使用jenkins客户端:

java -jar jenkins-cli.jar -s http://localhost:8080/ groovy create-credential.groovy
使用create-credential.groovy:

import jenkins.model.*
import com.cloudbees.plugins.credentials.CredentialsScope
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl

def addPassword = { username, new_password ->
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
        com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
        Jenkins.instance
    )

    def c = creds.findResult { it.username == username ? it : null }

    if ( c ) {
        println "found credential ${c.id} for username ${c.username}"
    } else {
        def credentials_store = Jenkins.instance.getExtensionList(
            'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
            )[0].getStore()

        def scope = CredentialsScope.GLOBAL

        def description = ""

        def result = credentials_store.addCredentials(
            com.cloudbees.plugins.credentials.domains.Domain.global(), 
            new UsernamePasswordCredentialsImpl(scope, null, description, username, new_password)
            )

        if (result) {
            println "credential added for ${username}" 
        } else {
            println "failed to add credential for ${username}"
        }
    }
}

addPassword('pinky', 'narf')

这将为用户“pinky”添加全局凭据,密码为“narf”

从插件版本2.1.1(2016年6月)起,这可以通过CLI或REST API实现:

从该页:


$cat>credential.xml创建一个可以归类为完整功能的测试来完成此任务感觉很糟糕,但是。。它起作用了。希望jenkins开发人员能够为这一点提供支持。谢谢你的帮助。不再正确,请参阅其他答案