在Jenkins中使用grovvy获取harbor 信息二次修改版本(增加安全性与易读性)
// 引入json库与jenkins库
import groovy.json.JsonSlurperClassic
import jenkins.model.Jenkins
// 与jenkins credential 联动加密获取harbor token
token = getAuthTokenHarbor()
// 获取harbor中的images list列表
// images = getImageName(NAME_SPACE,token)
获取harbor中的tags list列表
tags = getImageTag(NAME_SPACE,DOCKER_IMAGE,token)
return tags
def getImageName(NAME_SPACE,authToken) {
def conn = "https://harbor.xxx.xxx.xxx/api/v2.0/projects/${NAME_SPACE}/repositories?project_name=${NAME_SPACE}"
def http = new URL(conn).openConnection()
http.setRequestProperty("Authorization", authToken)
http.setRequestMethod('GET')
def project_name_list = []
def getRC = http.getResponseCode()
if(getRC.equals(200)) {
def json = parseJSON(res=http.getInputStream().getText())
for (project in json){
docker_image_name = project.name - "${NAME_SPACE}" - "/"
project_name_list += docker_image_name
}
}
return project_name_list
}
def getImageTag(NAME_SPACE,imageName,authToken) {
def conn ="https://harbor.xxx.xxx.xxx/api/v2.0/projects/${NAME_SPACE}/repositories/${imageName}/artifacts?project_name=${NAME_SPACE}&repository_name=${imageName}"
def http = new URL(conn).openConnection()
http.setRequestProperty("Authorization", authToken)
http.setRequestMethod('GET')
def project_name_list = []
def getRC = http.getResponseCode()
if(getRC.equals(200)) {
def json = parseJSON(http.getInputStream().getText())
for (project in json){
for (image_tag in project.tags){
project_name_list += image_tag.name
}
}
prod_project_name_list = project_name_list.findAll {
return it =~ "prod"
}
}
}
def getAuthTokenHarbor() {
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
Jenkins.instance,
null,
null)
for (c in creds) {
if (c.id == "harbor-admin") {
user = c.username
pass = c.password
}
}
def auth_token = "${user}:${pass}"
def basic_auth = "Basic ${auth_token.bytes.encodeBase64().toString()}";
return basic_auth
}
def parseJSON(json) {
return new groovy.json.JsonSlurperClassic().parseText(json)
}
文章转载自耶喝运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




