0
点赞
收藏
分享

微信扫一扫

Nexus 07 制品库制品晋级实践

RJ_Hwang 2022-08-17 阅读 58


制品晋级实践

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

Nexus 07 制品库制品晋级实践_上传

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

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

Nexus 07 制品库制品晋级实践_上传_02

用户选择:

  • 晋级策略
  • 包信息

Nexus 07 制品库制品晋级实践_hive_03

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

获取到制品的信息:

Nexus 07 制品库制品晋级实践_hive_04

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}"
"""
}

}

Nexus 07 制品库制品晋级实践_jar_05

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

举报

相关推荐

0 条评论