一、Jenkins上操作
1、创建一个名称为:demo-maven-service_PUSH的流水线,如下图:
2、勾选“参数化构建过程”
2.1添加参数--->选项参数
名称:srcUrl
选项:填写GitLab URL
描述:GitLab地址
2.2添加参数--->选项参数
名称:branchName
选项:master
描述:分支名称
2.3添加参数--->选项参数
名称:buildType
选项:mvn
描述:打包类型
2.4添加参数--->字符参数
名称:buildShell
默认值:clean package -DskipTests
描述:打包命令
3、流水线
二、在GitLab上新建立一个项目:jenkinsfile并在项目下新建立ci.jenkinsfile(名称对应上面的流水线中的脚本路径),内容如下:
#!groovy
//选择构建类型
String buildType = "${env.buildType}"
//打包命令
String buildShell = "${env.buildShell}"
//定义srcUrl项目的GitLab地址
String srcUrl = "${env.srcUrl}"
////定义项目的GitLab分支
String branchName = "${env.branchName}"
//pipeline
pipeline{
//选择任何可用的节点
agent any
stages{
stage("CheckOut"){
steps{
script{
//下载代码,详细步骤见打开流水线语法
checkout([$class: 'GitSCM', branches: [[name: "${branchName}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-auth', url: "${srcUrl}"]]])
}
}
}
stage("Build"){
steps{
script{
build.Build(buildType,buildShell)
}
}
}
}
}
三、在GitLab上新建立一个项目,名称为:jenkinslib并建立src/org/devops/build.groovy共享库,内容如下:
package org.devops
//构建类型,命令
def Build(buildType,buildShell){
def buildTools = ["mvn":"MAVEN_HOME","ant":"ANT_HOME","gradle":"GRADLE_HOME","npm":"NODE_HOME"]
println("当前选择的构建类型为${buildType}")
buildHome = tool buildTools[buildType]
sh "${buildHome}/bin/${buildType} ${buildShell}"
}
四、在Jenkins上配置使用共享库
1、打开Manage Jenkins--->Configure System--->Global Pipeline Libraries
Library
Name:这边填写上面在gitlab上创建的共享库名称jenkinslib
Default version:这边填写gitlab上创建的共享库名称jenkinslib分支默认名称master
Modern SCM:这边勾选
Git:这边勾选
Project Repository:这边填写上面在gitlab上创建的共享库名称jenkinslib的GitLab地址
Credentials:这边填写jenkins连接gitlab上创建的共享库名称jenkinslib的GitLab认证(可以在jenkins上的凭据上添加)
五、最终效果图如下:
说明:
1、pipeline上引用jenkinsfile是为了在GitLab上方便管理;2、引用共享库是为了大家都可以方便引用;3、以上构建只是mvn模版,另ant、gradle、npm也类似。