You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:55:22