简介:在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类,每个文件(类)中包含一个或多个方法。每个方法包含groovy语句块。

1.gitlab创建共享库:

库结构:
src: 类似于java的源码目录,执行流水线时会加载到class路径中。
vars: 存放全局变量脚本,小的功能函数。
resources: 存放资源文件,类似于配置信息文件。

 

 

 

 2.jenkins共享库定义

系统管理--系统配置--Global Pipeline Libraries

 

 3.共享库使用

加载共享库:@Library("mylib@main") _ 

加载多个分支:@Library("mylib","mylib2@1.0") _ 

 

 

流水线使用共享库:

 

部分代码:

jenkinsfile

复制代码
@Library("mylib@main") _     //加载共享库
import org.devops.*                        // 导入库

def checkout = new Checkout()    //New实例化
def build = new Build()
def unittest = new UnitTest()
def sonarscan = new SonarScan()

//env.buildType = "${JOB_NAME}".split("-")[1]

//流水线
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.buildType}")
                    //sh "${env.buildShell}"
                }
            }
        }

        /*stage("UnitTest"){
            steps{
                script{
                    unittest.CodeTest("${env.buildType}")
                }
            }
        }*/
        stage("sonarscan"){
            steps{
                script{
                    println("--------------------sonarscan--------------------------")
                    sonarscan.CodeScan("${env.branchName}")
                }
            }
        }
    }
}
View Code
复制代码

build.groovy

复制代码
package org.devops

def MavenBuild(){
    sh "/usr/local/maven/bin/mvn clean package"
}

def GradleBuild(){
    sh "/usr/local/gradle/bin/gradle build"
}

def NpmBuild(){
    sh "npm install && npm run build"
}

def YarnBuild(){
    sh "yarn"
}

def CodeBuild(type){
    switch(type){
        case "maven":
            MavenBuild()
            break;
        case "gradle":
            GradleBuild()
            break;
        case "npm":
            NpmBuild()
            break;
        case "yarn":
            YarnBuild()
            break;
        default:
            error "No such tools ... [maven/ant/gradle/npm/yarn/go]"
            break
    }
}
View Code
复制代码