![](/img/trans.png)
[英]java.lang.NoSuchMethodError: No such DSL method 'echo' found among steps
[英]java.lang.NoSuchMethodError: No such DSL method 'stages' found among steps
當我運行下面的腳本時,出現錯誤“ java.lang.NoSuchMethodError: No such DSL method stages found among steps ”。
有人可以告訴我為什么以及如何解決這個問題嗎?
基本上我需要為我的每個階段做,並且它必須並行運行。 我們可以在聲明式管道上做嗎?
def services = ["A", "B", "C"]
def parallelStagesMap = services.collectEntries {
["${it}" : generateStage(it)]
}
def generateStage(service) {
return {
stage("${service}") {
agent { label 'dotnet-agent' }
environment {
PROJECT = "myProject.${service}"
ARTIFACT_NAME = "${GIT_COMMIT}-${service}.zip"
}
stages {
stage('Build-${service}') {
steps {
include 'automation/jenkins/${service}/buildAndArtifact'
}
}
stage('Test-${service}') {
steps {
dir("src/${PROJECT}.Tests") {
sh("dotnet test ${PROJECT}.Tests.csproj -c ${ASPNETCORE_ENVIRONMENT}")
}
}
}
stage('Deploy-${service}') {
steps {
include 'automation/jenkins/${service}/deploy'
}
}
}
}
}
}
pipeline {
agent { label 'dotnet-agent' }
stages {
stage('Set credentials') {
stages {
stage('Build') {
steps {
script {
parallel parallelStagesMap
}
}
}
}
}
}
}
我不知道您是否可以像您嘗試做的那樣擁有嵌套階段。
這似乎有效:
def services = ["A", "B", "C"]
def parallelStagesMap = services.collectEntries {
["${it}" : generateStage(it)]
}
def generateStage(service) {
return {
echo "build $service"
echo "test $service"
echo "deploy $service"
}
}
pipeline {
agent any
environment {
PROJECT = "myProject.${service}"
ARTIFACT_NAME = "${GIT_COMMIT}-${service}.zip"
}
stages {
stage('Build') {
steps {
script {
parallel parallelStagesMap
}
}
}
}
}
Output:
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] script
[Pipeline] {
[Pipeline] parallel
[Pipeline] { (Branch: A)
[Pipeline] { (Branch: B)
[Pipeline] { (Branch: C)
[Pipeline] echo
build A
[Pipeline] echo
test A
[Pipeline] echo
deploy A
[Pipeline] }
[Pipeline] echo
build B
[Pipeline] echo
test B
[Pipeline] echo
deploy B
[Pipeline] }
[Pipeline] echo
build C
[Pipeline] echo
test C
[Pipeline] echo
deploy C
[Pipeline] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.