流水线发布项目(mvn、ant、gradle、npm)

一、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、流水线

定义:选择Pipeline script from SCM
SCM:这边选择Git
Repositories
Repository URL:这边填写jenkinsfile的GitLab地址(下面创建的GitLab项目jenkinsfile地址)
Credentials:这边填写凭证
 
Branches to build
指定分支:这边填写jenkinsfile上的分支名,如master
脚本路径:ci.jenkinsfile(jenkinsfile项目下的文件名)
 

二、在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也类似。
原文地址:https://www.cnblogs.com/wangguod/p/12660789.html