Jenkins-无法从Jenkins文件运行管道
我有一个Jenkins文件,其中构建和测试在同一个从机上运行。 我的要求是构建必须在一个从机(比如A)上,测试必须在另一个从机(比如B)上运行 我刚刚设置了从节点B,我可以在Jenkins->Manage nodes中看到我的从节点A和B。 问题是构建阶段工作成功,但我的准备测试和测试阶段没有在从属B上执行 以下是出现的问题: 1.)在构建阶段成功后,我收到以下错误: “java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法'agent'[archive、bat、build、catchError、checkout、deleteDir、dir、dockerFingerprintFrom、dockerFingerprintRun、dockerNode、echo、EmailText、emailextrecipients、emailextrecipients、envVarsForTool、error、fileExists、findBuildScans、getContext、git、input、isUnix、junit、libraryResource、load、lock、mail、milestone、node、parallel、powershell、properties、publishHTML,pwd,readFile,readTrusted,resolveScm,retry,script,sh,sleep,stage,stash,step,svn,timeout,timestaps,tm,tool,unarchive,unstash,unarchive,validatedclarativeepeline,waitill,warnError,withContext,withCredentials,withDockerContainer,withDockerRegistry,withDockerServer,withEnv,wrapp,writeFile,ws]或符号[all、allOf、always、ant、antFromApache、antOutcome、antTarget、any、anyOf、Apitonk、architecture、archiveArtifacts、artifactManager、attach、authorizationMatrix、batchFile、booleanParam、branch、BrokenBuildProspects、BrokenTestsSpects、buildButton、buildDiscarder、buildTimestamp、buildTimestamp java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java 运行(Thread.java:748) 完成:失败 " 2.)没有看到我的分支的“准备测试”和“测试”阶段,而我可以看到与构建相关的阶段 随附我的文件代码:Jenkins-无法从Jenkins文件运行管道,jenkins,Jenkins,我有一个Jenkins文件,其中构建和测试在同一个从机上运行。 我的要求是构建必须在一个从机(比如A)上,测试必须在另一个从机(比如B)上运行 我刚刚设置了从节点B,我可以在Jenkins->Manage nodes中看到我的从节点A和B。 问题是构建阶段工作成功,但我的准备测试和测试阶段没有在从属B上执行 以下是出现的问题: 1.)在构建阶段成功后,我收到以下错误: “java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法'agent'[archive、bat、
pipeline {
agent none
options {
skipDefaultCheckout true
}
stages {
stage('build') {
agent {
docker {
image 'XYZ'
args '-v /etc/localtime:/etc/localtime:ro'
}
}
options { skipDefaultCheckout(true) }
steps {
echo '########################################## Building #########################################'
// trigger the build
sh 'scm-src/build.sh all-projects'
}
}
}
}
pipeline {
agent {
label 'laptop-hp'
}
stages {
stage('prepare_test') {
agent {
docker {
image 'ABC'
args '-v /home/jenkins/.ssh/:/home/jenkins/.ssh:ro -v /etc/localtime:/etc/localtime:ro'
}
}
options { skipDefaultCheckout(true) }
steps {
echo '####################################### Prepare Test Environment ############################'
sh 'scm-src/test.sh prepare'
}
}
stage('test') {
agent {
docker {
image 'ABC'
args '-v /home/jenkins/.ssh/:/home/jenkins/.ssh:ro -v /etc/localtime:/etc/localtime:ro'
}
}
options { skipDefaultCheckout(true) }
steps {
echo '########################################## Testing ##########################################'
sh 'scm-src/test.sh run'
}
}
}
}
我的从机B的名称是“笔记本电脑hp”,如Jenkins文件所示
Jenkinsfile是否有问题,或者我是否错过了从属B上的一些设置
问候
kdy一个数据库中不能有多个
管道{}
块。正确的语法是在构建阶段之后立即附加测试阶段。然后为docker{}中的每个阶段定义参数标签
在相应的从机上运行。另外,在管道的顶层添加一次选项skipDefaultCheckout true
就足够了
您的管道现在应该如下所示:
pipeline {
agent none
options {
skipDefaultCheckout true
}
stages {
stage('build') {
agent {
docker {
image 'XYZ'
label 'slave-A'
args '-v /etc/localtime:/etc/localtime:ro'
}
}
steps {
echo '########################################## Building #########################################'
// trigger the build
sh 'scm-src/build.sh all-projects'
}
}
stage('prepare_test') {
agent {
docker {
image 'ABC'
label 'laptop-hp'
args '-v /home/jenkins/.ssh/:/home/jenkins/.ssh:ro -v /etc/localtime:/etc/localtime:ro'
}
}
steps {
echo '####################################### Prepare Test Environment ############################'
sh 'scm-src/test.sh prepare'
}
}
stage('test') {
agent {
docker {
image 'ABC'
label 'laptop-hp'
args '-v /home/jenkins/.ssh/:/home/jenkins/.ssh:ro -v /etc/localtime:/etc/localtime:ro'
}
}
steps {
echo '########################################## Testing ##########################################'
sh 'scm-src/test.sh run'
}
}
}
}