自定义的实体类 @Data @NoArgsConstructor @ApiModel(description = "CredentialsStoreActionDTO") @AllArgsConstructor public class CredentialsStoreActionDTO { private String _class; private List<JenkinsCredentialsInfoDTO> credentials; private String description; private String displayName; private String fullDisplayName; private String fullName; private Boolean global; private String urlName; }
@Data @NoArgsConstructor @ApiModel(description = "JenkinsCredentialsInfoDTO") @AllArgsConstructor public class JenkinsCredentialsInfoDTO { private String id; private String description; private String displayName; private Object fingerprint; private String fullName; private String typeName; }
// 获取jenkinsHttpClient public JenkinsHttpClient getClient(String jenkinsUrl, String userName, String token) { JenkinsHttpClient jenkinsHttpClient = null; try { jenkinsHttpClient = new JenkinsHttpClient(new URI(jenkinsUrl), userName, token); } catch (URISyntaxException e) { e.printStackTrace(); } return jenkinsHttpClient; }
谢谢 https://cloud.tencent.com/developer/article/1536203 根据里面的方法整理出来的。 1: 查询 凭证:jenkins的路径,用户名,密码(用户要有权限) public List<JenkinsCredentialsInfoDTO> queryCredentialsList(String url, String userName, String password) throws Exception { JenkinsHttpClient jenkinsHttpClient = getClient(url, userName, password); // 获取凭证列表 curl -X GET http://www.xxx.xxx/credentials/store/system/domain/_/api/json?depth=1 --user username:password String credentials = null; if (org.apache.commons.lang3.StringUtils.endsWith(url, "/")) { credentials = jenkinsHttpClient.get(url + "credentials/store/system/domain/_/api/json?depth=1"); } else { credentials = jenkinsHttpClient.get(url + "/credentials/store/system/domain/_/api/json?depth=1"); } if (!StringUtils.isEmpty(credentials)) { ObjectMapper objectMapper = new ObjectMapper(); CredentialsStoreActionDTO credentialsStoreActionDTO = objectMapper.readValue(credentials, CredentialsStoreActionDTO.class); return CollectionUtils.isEmpty(credentialsStoreActionDTO.getCredentials()) == true ? new ArrayList<>() : credentialsStoreActionDTO.getCredentials(); } return new ArrayList(); }
2:创建凭证: 如果自己定义凭证credentialsId就传入凭证,如果没有。就不输入,jenkins自己创建
public void createCredentials(String credentialsId, String url, String userName, String password) throws Exception { JenkinsHttpClient jenkinsHttpClient = getClient(url, userName, password); List<NameValuePair> data = new ArrayList<>(); data.add(createCredentialsParam(credentialsId, userName, password)); HttpResponse httpResponse = jenkinsHttpClient.post_form_with_result("credentials/store/system/domain/_/createCredentials", data, false); if (httpResponse.getStatusLine().getStatusCode() == 302) { logger.info("创建凭证成功,返回状态[{}]", httpResponse.getStatusLine().getStatusCode()); } else { throw new Exception(“ ”); } }
// 创建凭证参数 private BasicNameValuePair createCredentialsParam(String credentialsId, String userName, String password) { if (StringUtils.isEmpty(credentialsId)) { return new BasicNameValuePair("json", "{" + "\"\": \"0\"," + "\"credentials\": " + "{" + "\"scope\": \"GLOBAL\"," + "\"id\": \"\"," + "\"username\": \"" + userName + "\"," + "\"password\": \"" + password + "\"," + "\"description\": \"\"," + "\"$class\": \"com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl\"" + "}" + "}"); } else { return new BasicNameValuePair("json", "{" + "\"\": \"0\"," + "\"credentials\": " + "{" + "\"scope\": \"GLOBAL\"," + "\"id\": \"" + credentialsId + "\"," + "\"username\": \"" + userName + "\"," + "\"password\": \"" + password + "\"," + "\"description\": \"\"," + "\"$class\": \"com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl\"" + "}" + "}"); } }
3:删除凭证
public void deleteCredentials(String credentialsId, String url, String userName, String password) throws Exception { JenkinsHttpClient jenkinsHttpClient = getClient(url, userName, password); String cUrl = url + "credentials/store/system/domain/_/credential/" + credentialsId + "/doDelete"; jenkinsHttpClient.post(cUrl); }
4:更新凭证 public void updateCredentials(String newId, String oldId, String url, String userName, String password) throws Exception { String jeniknsUrl = url + "credentials/store/system/domain/_/credential/" + oldId + "/updateSubmit"; String json = null; if (StringUtils.isEmpty(newId)) { json = "{\"stapler-class\": \"com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl\", " + "\"scope\": \"GLOBAL\", \"username\":\"" + userName + "\", \"password\":\"" + password + "\"," + "\"id\":\"\", \"description\": \"\"}"; } else { json = "{\"stapler-class\": \"com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl\", " + "\"scope\": \"GLOBAL\", \"username\":\"" + userName + "\", \"password\":\"" + password + "\"," + "\"id\":\"" + newId + "\", \"description\": \"\"}"; } List<NameValuePair> data = new ArrayList<>(); data.add(new BasicNameValuePair("json", json)); JenkinsHttpClient jenkinsHttpClient = getClient(url, userName, password); HttpResponse httpResponse = jenkinsHttpClient.post_form_with_result(jeniknsUrl, data, false); if (httpResponse.getStatusLine().getStatusCode() == 302) { logger.info("更新凭证成功,返回状态[{}]", httpResponse.getStatusLine().getStatusCode()); } }