暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Jenkins Groovy 获取harbor 信息二次修改版本(增加安全性与易读性)

耶喝运维 2020-11-04
646

在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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论