Jenkins利用环境变量支持更多构建工具

来自Linux78|wiki

是不是所有的构建工具都需要安装相应的Jenkins插件才可以使用呢?当然不是。 平时,开发人员在搭建开发环境时做的就是:首先在机器上安装好构建工具,然后将这个构建工具所在目录加入PATH环境变量中。 如果想让Jenkins支持更多的构建工具,也是同样的做法:在Jenkins agent上安装构建工具,并记录下它的可执行命令的目录,然后在需要使用此命令的Jenkins pipeline的PATH环境变量中加入该可执行命令的目录。示例

pipeline {
   agent any
   environment {
       PATH = "/usr/lib/customtool/bin:$PATH"
   }
   stages {
       stage('build') {
           steps {
               sh "customtool build"
     }
       }
   }
}

另一种写法

pipeline {
    agent any
    environment {
        CUSTOM_TOOL_HOME = "/usr/lib/customtool/bin"
    }
    stages {
         stage('build') {
            steps {
                sh "${CUSTOM_TOOL_HOME}/customtool build"
            }
         }
    }
 }

利用tools作用域实现多版本编译

在实际工作中,有时需要对同一份源码使用多个版本的编译器进行编译。tools指令除了支持pipeline作用域,还支持stage作用域。所以,我们可以在同一个pipeline中实现多版本编译。代码如下:

pipeline {
   agent any
	stages {
	    stage("build with jdk-10.0.2") {
		    tools {
			    jdk "jdk-10.0.2"
			}
			steps {
			    sh "printenv"
			}
		}
		stage("build with jdk-9.0.4") {
		    tools {
			    jdk "jdk-9.0.4"
			}
            steps{
			    sh "printenv"
			}			
		}	
	}
 }

在打印出来的日志中,会发现每个stage下的JAVA_HOME变量的值都不一样