Я пытаюсь использовать эту команду curl для загрузки закрытого ключа в учетные данные Jenkins SSH:
JENKINS_PRIVATE_KEY_AS_STRING='-----BEGIN RSA PRIVATE KEY----- MIIEo...2qwu8diE -----END RSA PRIVATE KEY-----'
curl -H $CRUMB -X POST "http://$USER:$API_TOKEN@$JENKINS_HOST/credentials/store/system/domain/_/createCredentials" \
--data-urlencode "json={
"": "0",
"credentials": {
"scope": "GLOBAL",
"id": "jenkins-ssh",
"username": "jenkins",
"password": "",
"privateKeySource": {
"stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource",
"privateKey": "$JENKINS_PRIVATE_KEY_AS_STRING",
},
"description": "jenkins-ssh-credentials",
"stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey"
}
}"
Но когда я запускаю вышеописанное, происходит сбой с:
curl: option -----END: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
Почему строка в переменной $JENKINS_PRIVATE_KEY_AS_STRING
вызывает ошибку и как ее исправить?
Основываясь на ответе ниже, я также попробовал:
curl -H $CRUMB -X POST "http://$USER:$API_TOKEN@$JENKINS_HOST/credentials/store/system/domain/_/createCredentials" \
--data-urlencode "json={
\"\": \"0\",
\"credentials\": {
\"scope\": \"GLOBAL\",
\"id\": \"jenkins-ssh\",
\"username\": \"jenkins\",
\"password\": \"\",
\"privateKeySource\": {
\"stapler-class\": \"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource\",
\"privateKey\": \"$JENKINS_PRIVATE_KEY_AS_STRING\",
},
\"description\": \"jenkins-ssh-credentials\",
\"stapler-class\": \"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey\"
}
}"
Но это дает ошибку:
: Specified type class com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey is not assignable to the expected class com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:671)
Caused: java.lang.IllegalArgumentException: Failed to instantiate class com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource from {"stapler-class":"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey","privateKey":"-----BEGIN RSA PRIVATE KEY----- MIIEo...2qwu8diE -----END RSA PRIVATE KEY-----"}
at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:680)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777)
Caused: java.lang.IllegalArgumentException: Failed to convert the privateKeySource parameter of the constructor public com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey(com.cloudbees.plugins.credentials.CredentialsScope,java.lang.String,java.lang.String,com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource,java.lang.String,java.lang.String)
Но не уверен, что это связано с завитком.