【发布时间】:2018-12-18 13:48:41
【问题描述】:
尝试在我的 Jenkins 服务器中实现共享库时遇到问题。
我遇到的错误如下
No such DSL method 'agent' found among steps
我已尝试删除代理并仅在节点上运行,但仍然存在问题。 我正在关注以下内容:https://jenkins.io/blog/2017/09/25/declarative-1/
谁能指出我哪里出错了
vars/jenkinsJob.groovy
def call() {
// Execute build pipeline job
build_pipeline()
}
def build_pipeline() {
agent {
node {
label params.SLAVE
}
}
parameters {
string(name: 'SETTINGS_CONFIG_FILE_NAME', defaultValue: 'maven.settings')
string(name: 'SLAVE', defaultValue: 'new_slave')
}
environment {
mvn = "docker run -it --rm --name my-maven-project -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8"
}
stages {
stage('Inject Settings.xml File') {
steps {
configFileProvider([configFile(fileId: "${env.SETTINGS_CONFIG_FILE_NAME}", targetLocation: "${env.WORKSPACE}")]) {
}
}
}
stage('Clean') {
steps {
sh "${mvn} clean"
}
}
stage('Lint') {
steps {
sh "${mvn} lint"
}
}
stage('Build package and execute tests') {
steps {
sh "${mvn} build"
}
}
}
post {
always {
archive "**/target/surefire-reports/*"
junit '**/target/surefire-reports/*.xml'
step([$class: 'JacocoPublisher'])
}
}
}
Jenkinsfile
@Library('pipeline-library-demo') _
jenkinsJob.call()
【问题讨论】:
-
这可能是问题,也可能不是问题,但
node和agent不能相互嵌套,通常是互斥的。 -
看这个例子,我觉得node和agent都可以。 jenkins.io/doc/book/pipeline/syntax/#agent
-
好吧,这显然是允许的,但请看这里:stackoverflow.com/questions/42050626/…
-
btw.. "call" 是一个默认方法,所以触发它只需要 jenkinsJob()
标签: jenkins shared-libraries jenkins-pipeline