in pkg/client/jenkins/jenkins.go [254:293]
func (jc JenkinsClient) GetAdminToken() (*string, error) {
crumb, err := jc.GetCrumb()
if err != nil {
return nil, err
}
headers := make(map[string]string)
if crumb != "" {
headers[jenkinsCrumbKey] = crumb
}
params := map[string]string{"newTokenName": "admin"}
resp, err := jc.resty.R().
SetQueryParams(params).
SetHeaders(headers).
Post("/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken")
if err != nil {
return nil, fmt.Errorf("failed to perform POST request: %w", err)
}
if resp.IsError() {
return nil, fmt.Errorf("failed to process request: returns error: %v", resp.Status())
}
var parsedResponse map[string]interface{}
if err = json.Unmarshal(resp.Body(), &parsedResponse); err != nil {
return nil, fmt.Errorf("failed to unmarshal Jenkins response %v: %w", resp.Body(), err)
}
parsedData, valid := parsedResponse["data"].(map[string]interface{})
if valid {
token := fmt.Sprintf("%v", parsedData["tokenValue"])
return &token, nil
}
return nil, errors.New("failed to find token for admin")
}