Nexus 07 制品库制品晋级实践

制品晋级实践


制品晋级也需要一条流水线来负责制品的晋级。 

准备仓库: 按照环境不同,创建四个仓库分别存储不同环境的包。通过一条单独的流水线完成晋级。

如果包没有问题,可以将这个包晋级到其他仓库当中,步骤就是先下载包,然后传上去。

image.png

用户选择:

  • 晋级策略
  • 包信息

image.png

Jenkinsfile内容:先选晋级策略,然后需要将晋级的包下载下来,然后上传到新的仓库。

获取到制品的信息:

String artifactURL = "${env.artifactUrl}".toString()



pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
              script{
                                  
                println("The artifact url is: ${artifactURL}")
                
                env.version = "${params.artifactUrl}".split('/')[-2]
                env.appName = "${params.artifactUrl}".split('/')[-3]
                env.buName =  "${params.artifactUrl}".split('/')[-4]
                env.pkgName = env.appName + "-${version}.jar"
                
                sh """
                        echo  ${params.artifactUrl} -o ${env.pkgName} -u admin:admin123

                    """
                
              }
 
                
            }
        }
    }
}
Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on build-01 in /data/cicd/jenkinsagent/workspace/nexus/nexus-chajian-download
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
The artifact url is: http://139.198.166.235:8082/repository/devops-micro/org/devops/devops-lib/8.8.8/devops-lib-8.8.8.jar
[Pipeline] sh
+ echo http://139.198.166.235:8082/repository/devops-micro/org/devops/devops-lib/8.8.8/devops-lib-8.8.8.jar -o devops-lib-8.8.8.jar -u admin:admin123
http://139.198.166.235:8082/repository/devops-micro/org/devops/devops-lib/8.8.8/devops-lib-8.8.8.jar -o devops-lib-8.8.8.jar -u admin:admin123
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

 完整代码如下:

currentBuild.description = "trigger  by  ${params.updatePolicy}"

pipeline {
    agent {
        label "build"
    }

    stages{

        stage("PullArtifact"){
            steps{
                script{

                    env.version = "${params.artifactUrl}".split('/')[-2]
                    env.appName = "${params.artifactUrl}".split('/')[-3]    // Day5/acmp-myapp-service
                    env.buName =  "${params.artifactUrl}".split('/')[-4] 
                    env.pkgName = env.appName + "-${version}.jar"

                    sh """
                        curl ${params.artifactUrl} -o ${env.pkgName} -u admin:admin123

                    """
                }
            }
        }


        stage("UpdateArtifact"){
            steps{
                script{

                    switch("${params.updatePolicy}") {
                        case "dev>uat":
                            repoName = "zeyang-uat"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName,targetDir, "./", "${env.pkgName}" )
                            break;

                        case "uat>stag":
                            repoName = "zeyang-stag"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName,targetDir, "./", "${env.pkgName}" )
                            break;

                        case "stag>prod":
                            repoName = "zeyang-prod"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName,targetDir, "./", "${env.pkgName}" )
                            break;

                        default:
                            println("xxxxxxxxx")
                    }
                }
            }
        }
    }
}

//上传制品
def PushRawArtifacts(repoName,targetDir, filePath, pkgName ){
     withCredentials([usernamePassword(credentialsId: '111b337e-89a0-4761-9ca3-6ee626ccd7a1', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
        sh """
            curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=${repoName}" \
            -H "accept: application/json" \
            -H "Content-Type: multipart/form-data" \
            -F "raw.directory=${targetDir}" \
            -F "raw.asset1=@${filePath}/${pkgName};type=application/java-archive" \
            -F "raw.asset1.filename=${pkgName}" \
            -u "${USER}":"${TOKEN}"
        """
    }

}

image.png

总结:先选择晋级策略,然后下载原始的制品,然后获取到原始的ID信息,然后重命名更改名称,最后上传到制品库就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值