我有两个作业在两个不同的操作系统上运行,所有的构建步骤都是相同的,是工具(jdk和maven),元数据是不同的。
我想根据操作系统在两个代理上创建一个包含这两个作业的作业。我使用的是Jenkins Pipeline声明性语法,问题是我找不到一种方法来为特定的agent声明工具。
在Jenkins Pipeline中,我们可以在整个管道中或在特定的stage中声明tools,仅此而已。
PS:我需要使用声明性语法:不使用node {}
如果我这样做了:
stage('Environment Set Up Linux') {
agent {
label "linux"
}
tools {
jdk 'oracle-jdk-1.8'
}
steps {
echo "Environment tools have been configured"
}
}
stage('Environment Set Up Solaris') {
agent {
label "solaris-64"
}
tools {
jdk 'oracle-jdk-1.7'
}
steps {
echo "Environment tools have been configured"
}
}这些工具将只用于这些阶段,而不是所有阶段,并且在每个阶段中制作工具将是愚蠢的。
发布于 2018-03-28 22:45:00
定义在整个流水线中的每个从机上可用的常用工具以及stage部分中的特定工具:
pipeline {
agent any
tools {
maven 'Maven 3.3.9'
}
stages {
stage('test'){
tools {
maven 'Maven 2.2.1'
}
steps {
sh 'mvn --version'
}
}
stage('random'){
steps {
sh 'mvn --version'
}
}
}
}在本例中,阶段'test‘的输出是2.2.1,因为我在阶段部分定义了我的工具,这会覆盖全局管道。在阶段random中,我没有在阶段中定义工具,因此使用在全局管道中定义的工具,并打印3.3.9。我希望这就是你的意思。
在你的例子中,可能所有的代理都包含jdk1.8,并且你想在几乎所有的阶段中使用它(在管道中定义它),如果有一个阶段你想使用jdk 1.7,只需在阶段部分中定义工具,它将覆盖全局配置。
https://stackoverflow.com/questions/49510282
复制相似问题