【问题标题】:How to create a jenkins credentials via API?如何通过 API 创建 jenkins 凭据?
【发布时间】:2016-06-06 12:28:08
【问题描述】:

有人知道如何通过 API 或 Jenkins 中的 POST 请求创建新的 jenkins (2.8) 凭据(用于 git 访问)吗?我曾尝试使用此代码(来自另一个 stackoverflow 主题),但它什么也没做:

import json
import requests

def main():
    data = {
        'credentials': {
            'scope': "GLOBAL",
            'username': "jenkins",
            'privateKeySource': {
                'privateKey': "-----BEGIN RSA PRIVATE KEY-----\nX\n-----END RSA PRIVATE KEY-----",
                'stapler-class': "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource"
            },
            'stapler-class': "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey"
        }
    }

    payload = {
        'json': json.dumps(data),
        'Submit': "OK",
    }
    r = requests.post("http://%s:%d/credential-store/domain/_/createCredentials" % (localhost, 8080), data=payload)
    if r.status_code != requests.codes.ok:
        print r.text

【问题讨论】:

    标签: api jenkins jenkins-api


    【解决方案1】:

    我是这样做的:

    java -jar /tmp/jenkins-cli.jar -s http://localhost:8080/ \
    groovy /tmp/credentials.groovy id username password
    

    credentials.groovy

    import jenkins.model.*
    import com.cloudbees.plugins.credentials.*
    import com.cloudbees.plugins.credentials.common.*
    import com.cloudbees.plugins.credentials.domains.*
    import com.cloudbees.plugins.credentials.impl.*
    
    domain = Domain.global()
    store = Jenkins.instance.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0].getStore()
    
    usernameAndPassword = new UsernamePasswordCredentialsImpl(
      CredentialsScope.GLOBAL,
      args[0],
      "",
      args[1],
      args[2]
    )
    
    store.addCredentials(domain, usernameAndPassword)
    

    【讨论】:

    • java可以吗?如果你能用java做,请告诉我你的答案。
    【解决方案2】:

    我遇到了同样的问题,经过一番挖掘/测试后,您似乎需要更改它

    /credential-store/domain/_/createCredentials
    

    到这里

    /credentials/store/system/domain/_/createCredentials
    

    【讨论】:

      【解决方案3】:

      它不起作用:/credential-store/domain/_/api/json

      你必须使用这个网址:/credentials/store/system/domain/_/api/json

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多