如何在Jenkins共享库JSL中实现多上传ID批量删除循环函数
批量删除服务器上传文件的Jenkins共享库解决方案
现有单个删除函数
以下是你当前使用的单个上传ID删除函数(已翻译注释):
/* 以下函数用于删除服务器上已存在的上传文件 */ def delete_upload(server_url, each_upload_id, authentication) { 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' if (response.status == 202) { def result = readJSON text: """${response.content}""" return result['message'].toString() } else { throw new Exception("上传ID不正确!请提供正确的上传ID。") } }
单个删除函数的响应示例
Response Code: HTTP/1.1 202 Accepted Response: {"code":202,"message":"Delete Job for file with id 2","type":"INFO"} Success: Status code 202 is in the accepted range: 100:599
用途与需求
- 用途:通过上传ID删除Web服务器上的对应上传文件
- 需求:传入多个上传ID(如1、2、3),循环调用上述函数实现批量删除
批量删除实现方案
在共享库中新增一个批量删除函数,通过遍历上传ID列表,逐个调用已有的delete_upload函数完成批量操作:
/* 批量删除服务器上多个上传文件 */ def batch_delete_uploads(server_url, upload_ids, authentication) { def results = [] upload_ids.each { upload_id -> try { def message = delete_upload(server_url, upload_id, authentication) def successMsg = "上传ID ${upload_id} 删除成功:${message}" results.add(successMsg) echo successMsg } catch (Exception e) { def errorMsg = "上传ID ${upload_id} 删除失败:${e.getMessage()}" results.add(errorMsg) echo errorMsg // 若需单个ID删除失败时终止批量操作,取消下一行注释 // throw new Exception(errorMsg) } } return results }
流水线调用示例
在你的Jenkins流水线中可以这样使用批量删除函数:
// 替换为实际服务器地址 def serverUrl = "https://your-server-address.com" // 替换为实际认证令牌 def authToken = "Bearer your-auth-token" // 需要删除的上传ID列表 def targetUploadIds = [1, 2, 3, 4] // 执行批量删除 def deleteResults = batch_delete_uploads(serverUrl, targetUploadIds, authToken) // 输出所有删除结果 deleteResults.each { result -> echo result }
关键说明
- 默认配置下,单个上传ID删除失败不会中断整个批量任务,所有ID都会被处理
- 若需要严格执行(单个失败即终止),只需取消批量函数中
throw new Exception(errorMsg)的注释 - 返回的
results列表包含所有ID的处理结果,可用于后续的报告或通知
内容的提问来源于stack exchange,提问作者Abilash
相关产品推荐
相关产品推荐

