Jenkins共享库使用

说明:共享库一般适用于重复使用部分的代码,可以降低jenkinsfile文件的大小,并且易于维护,话不多说 下面开干。

1、jenkins开启依赖库配置

2、定义共享库中的代码

此示例中的项目代码:https://github.com/zhangnan30/share/tree/main

存储Jenkins共享库用到的代码;

src :           存放项目代码;                     #存放共享库里定义的执行步骤

Jenkinsfile:用于所有项目的构建使用;  #流水线定义的pipline代码

resources :   存放配置文件;                    #比如可以在此目录下定义settings.xml文件,用于构建时引用

 

 

3、编写共享库代码 path:src/org/devops/BUILD.groovy

package org.devops       

//判断项目是否为maven或gradel
def Project(){
    if ("${JOB_NAME}".contains("maven")){
        JDK("${env.jdk}")
        BuildMaven(env.build)
        sh " echo this_is_java-project"
    }
    if ("${JOB_NAME}".contains("gradle")){
        BuildGradle(env.build)
        sh "echo this_is_gradle-project"
    }
}

//设置jdk版本
def JDK(env_jdk){
     def jdks = ["JDK8": "/usr/local/jdk8/bin",
                "JDK11": "/usr/local/jdk11/bin"]
    sh """
        export JAVA_HOMES=${jdks["${jdk}"]}
        echo \$JAVA_HOMES
        """
}

//拉代码
def PullCode(branchname, srcUrl){
    checkout scmGit(branches: [[name: "${branchName}"]],
             extensions: [],
             userRemoteConfigs: [[url: "${srcUrl}"]])
}

//maven构建
def BuildMaven(env_build){
    data = libraryResource 'settings.xml'
    writeFile file: 'settings.xml', text: data
    sh "ls -l && cat settings.xml && ${env.build} && ls -l target/*"
}

//gradle构建
def BuildGradle(env_build){
    sh "ls -l && ${env.build} && ls -l "
}

4、编写jenkinsfile并引用上面声明的共享库

@Library("mylib2")_        //注意呼应在jenkins中自定义的共享库名称

//导入共享库里的函数

def project = new org.devops.BUILD()   //定义一个叫projenct的函数并引用上面定义的共享库的文件



pipeline {
    agent any

    stages {
        stage('判断项目') {
            steps {
                script{
                    project.PullCode("${env.branchName}", "${env.srcUrl}")  //引用共享库中pull代码的方法
                    sh "echo \$JOB_NAME"
                    project.Project()    //使用定义的projec函数,并引用共享库中的名称为Project()的方法,这样共享库就引用成功,以此类推你也可以引用其他的方法比如:JDK(env_jdk)
                }
                echo "$JOB_NAME"
                
            }
        }

        /*stage('saomiao'){
            steps{
                script{
                    withCredentials([usernamePassword(credentialsId: 'sao',
                                     passwordVariable: 'pass', 
                                     usernameVariable: 'name')]) {
                 sh """
                    sonar-scanner \
                    -Dsonar.login=${name} \
                    -Dsonar.password=${pass} \
                    -Dsonar.host.url=http://10.97.58.25:9000 
                    """
                    }
                }
            }
        }
        */

        stage("use plugen"){
            steps{

                script{
                    withSonarQubeEnv(credentialsId: 'sao-123') {
                            
                        sh "sonar-scanner -Dsonar.login=${SONAR_AUTH_TOKEN} "
                             }
                }
            }
        }
    //post{
        //always{
            //cleanWs()
        //}
    //}
    }
}

5、创建jenkins maven任务,并验证

 6、创建jenkins gradle任务验证

 

posted @ 2023-12-12 11:41  ZANAN  阅读(109)  评论(0编辑  收藏  举报