持续集成交付CICD:GitLab共享库封装代码实现Nexus制品上传

目录

一、实验

1.GitLab共享库封装代码实现Nexus制品上传

二、问题

1.No such DSL method '$' found among steps

2.No such DSL method 'PushArtifacts'


一、实验

1.GitLab共享库封装代码实现Nexus制品上传

(1)环境

表1 主机

主机架构版本IP备注
jenkins

jenkins主节点      

2.414.2192.168.204.15:8080

 gitlab runner

(从节点)

gitlab

gitlab 主节点       

12.10.14192.168.204.8:82

  jenkins slave

(从节点)

sonarqube9.6192.168.204.8:9000
tomcatnexus3.63192.168.204.13:8081

(2)查看共享库

(3)新增制品类

(4)修改Artifacts.grooy代码并提交master

package org.devops

//上传制品
    def PushRawArtifacts(repoName,targetDir, filePath, pkgName ){
        withCredentials([usernamePassword(credentialsId: '318df1ad-083b-4158-ac88-2f584446563e', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
            sh """
                curl -X POST "http://192.168.204.13: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}"
             """
        }
    }

(5)修改流水线文件Jenkinsfile并提交master

@Library("mylib@master") _
import org.devops.*


def checkout = new Checkout()
def build = new Build()
def unittest = new UnitTest()
def sonar = new Sonar()
def artifacts = new Artifacts()

pipeline {
    agent { label "build"}

    options {
      skipDefaultCheckout true
    }
    stages{
        stage("Checkout"){
            steps{
                script {
                    println("GetCode")
                    checkout.GetCode("${env.srcUrl}","${env.branchName}")
                }
            }
        }
        stage("build"){
            steps{
                script{
                    println("Build")
                    build.CodeBuild("${env.buildTool}")
                }
            }

        }

        stage("UnitTest"){
            steps{
                script{
                    println("Test")
                    unittest.CodeTest("${env.buildTool}")
                }
            }

        }
        stage("SonarScan"){
            steps {
               script {
                    groupName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1]
                    sonar.CodeSonar("${env.buildTool}",projectName,groupName)
                }

            }

        }
        stage("PushArtifacts"){
            steps {
               script {
                    repoName = "${JOB_NAME}".split("/")[0]
                    projectName ="${JOB_NAME}".split("/")[-1]
                    targetDir = "${projectName}/${BUILD_ID}/"

                    if ("${env.buildTool}" == "maven"){
                        filePath = "target"
                        pkgName = sh returnStdout: true, script: "cd target/ ; ls maven*.jar"        
                    }

                    artifacts.PushRawArtifacts(repoName,targetDir,filePath,pkgName.trim())
                }

            }

        }

    }

}

(6) Jenkins手动构建maven项目流水线

(7)成功

(8)Nexus查看

二、问题

1.No such DSL method '$' found among steps

(1)报错

java.lang.NoSuchMethodError: No such DSL method '$' found among steps 

(2)原因分析

变量引用错误

(3)解决方法

修改代码。

修改前:

if (${env.buildTool} == "maven"){

修改后:

if ("${env.buildTool}" == "maven"){

2.No such DSL method 'PushArtifacts'

(1) 报错

java.lang.NoSuchMethodError: No such DSL method 'PushArtifacts' found among steps 

(2)原因分析

方法名错误

(3)解决方法

修改代码。

修改前:

 artifacts.PushArtifacts(repoName,targetDir,filePath,pkgName.trim())

修改后:

artifacts.PushRawArtifacts(repoName,targetDir,filePath,pkgName.trim())

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值