Groovy批量删除上传ID函数调用报错,寻求解决方案
问题修复方案
核心错误分析及修复点
- 变量名冲突:
delete_multiupload函数参数包含upload_id,但在list.each闭包中又用upload_id作为迭代变量,导致作用域内变量重名。只需将迭代变量改为其他名称(如eachUploadId)即可解决该报错。 delete_upload内部变量错误:函数参数为each_upload_id,但拼接URL时误用了未定义的upload_id,需替换为each_upload_id避免空指针异常。- API调用参数错误:
delete_upload仅需3个参数,调用时多传了group_name,且存在拼写错误server_ur1,需移除多余参数并修正拼写为server_url。 - 方法名拼写错误:
readfile→readFile、printIn→println、printin→println,匹配Jenkins Pipeline标准方法命名。 - ID列表优化:拆分后的ID可能带空格,添加
trim()处理,避免因空格导致API调用失败。
修正后的完整代码
/* 删除单个上传文件的函数 */ def delete_upload(server_url, each_upload_id, authentication){ // 修复:使用参数each_upload_id拼接URL def delete_upload_url = server_url + "/api/v1/uploads/" + each_upload_id def response = httpRequest consoleLogResponseBody: true, contentType: 'APPLICATION_JSON', customHeaders: [[maskValue: false, name: 'id ', value: each_upload_id], [maskValue: false, name: 'Authorization', value: authentication]], httpMode: 'DELETE', ignoreSslErrors: true, responseHandle: 'NONE', url: delete_upload_url, validResponseCodes: '100:599' def result = readJSON text: """${response.content}""" if(response.status == 202){ println("Status code: 202 (删除请求已接收)") } else{ throw new Exception("上传ID无效,请检查后重试。") } return result['message'].toString() } /* 批量删除上传文件的函数 */ def delete_multiupload(server_url, group_name, authentication){ // 修复:修正方法名为readFile String filepath = readFile "/data/Make/upload id.txt" println("读取到的原始ID内容: " + filepath) // 修复:添加trim()清理ID中的空格 def list = filepath.split(',').collect { it.trim() } println("处理后的ID列表: " + list) // 修复:迭代变量改为eachUploadId,避免变量名冲突 list.each { eachUploadId -> println("正在调用删除API,目标ID: $eachUploadId") // 修复:移除多余参数group_name,修正server_ur1拼写 def delete_response = delete_upload(server_url, eachUploadId, authentication) println("ID $eachUploadId 删除结果: $delete_response") } }
内容的提问来源于stack exchange,提问作者Abilash
相关产品推荐
相关产品推荐

