Harbor REST API
安装插件:
- Extended Choice Parameter【扩展选项插件】
http://192.168.1.110:8088/devcenter-api-2.0
批量删除同一个镜像多个tag
/* 清理docker镜像 1. 获取镜像列表 2. 用户选择删除 3. 调用api删除 */ pipeline { agent { label "build" } stages{ stage("GetTags"){ steps{ script{ env.projectName = "hwf-app" env.repoName = "nginx" env.result = GetArtifact(env.projectName, env.repoName) env.result = env.result - '[' - ']' } } } stage("Clean"){ steps{ script{ def result = input message: "是否删除${env.projectName}项目的${env.repoName}这些标签:", parameters: [extendedChoice(defaultValue: "${env.result}", multiSelectDelimiter: ',', name: 'taga', quoteValue: false, q saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: "${env.result}", visibleItemCount: 20)] println("${result}") // println("Delete ${taga}, doing.......") // tags = "${taga}" - '[' - ']' for(t in result.split(',')){ println("Delete >>>>" + t.trim()) DeleteArtifactTag(env.projectName,env.repoName, t.trim()) } } } } } } // 删除镜像tag def DeleteArtifactTag(projectName,repoName, tagName){ harborAPI = "http://192.168.1.110:8088/api/v2.0/projects/${projectName}/repositories/${repoName}" apiURL = "artifacts/${tagName}" sh """ curl -X DELETE "${harborAPI}/${apiURL}" -H "accept: application/json" -u admin:Admin1234 """ } // 获取镜像的所有标签 // acmp-nginx-service def GetArtifactTag(projectName,repoName ){ harborAPI = "http://192.168.1.110:8088/api/v2.0/projects/${projectName}/repositories/${repoName}" apiURL = "artifacts?page=1&page_size=10" response = sh returnStdout: true, script: """curl -X GET "${harborAPI}/${apiURL}" -H "accept: application/json" -u admin:Admin1234 """ response = readJSON text: """${response - "\n"}""" tags = [] for (t in response[0].tags){ tags << t.name } return tags }
删除多个artifact
/* 清理docker镜像 1. 获取镜像列表 2. 用户选择删除 3. 调用api删除 */ pipeline { agent { label "build" } stages{ stage("GetTags"){ steps{ script{ env.projectName = "hwf-app" env.repoName = "nginx" env.result = GetArtifact(env.projectName, env.repoName) println("result= ${env.result}") env.result = env.result - '[' - ']' } } } stage("Clean"){ steps{ script{ def result = input message: "是否删除${env.projectName}项目的${env.repoName}这些标签:", parameters: [extendedChoice(defaultValue: "${env.result}", multiSelectDelimiter: ',', name: 'taga', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: "${env.result}", visibleItemCount: 20)] println("${result}") // println("Delete ${taga}, doing.......") // tags = "${taga}" - '[' - ']' for(t in result.split(',')){ println("Delete >>>>" + t.trim()) DeleteArtifactTag(env.projectName,env.repoName, t.trim()) } } } } } } // 删除镜像tag def DeleteArtifactTag(projectName,repoName, tagName){ harborAPI = "http://192.168.1.110:8088/api/v2.0/projects/${projectName}/repositories/${repoName}" apiURL = "artifacts/${tagName}" sh """ curl -X DELETE "${harborAPI}/${apiURL}" -H "accept: application/json" -u admin:Admin1234 """ } // 获取镜像的所有标签 // hwf-app/nginx def GetArtifact(projectName,repoName ){ harborAPI = "http://192.168.1.110:8088/api/v2.0/projects/${projectName}/repositories/${repoName}" apiURL = "artifacts?page=1&page_size=10&with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false" response = sh returnStdout: true, script: """curl -X GET "${harborAPI}/${apiURL}" -H "accept: application/json" -H "X-Accept-Vulnerabilities: application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0" -u admin:Admin1234 """ response = readJSON text: """${response - "\n"}""" println("${response}") digest = [] println(digest) println(response[0].digest) for (t in response.digest){ digest << t } return digest }
继续阅读

我的微信
这是我的微信扫一扫
评论