Jenkins pipeline 詹金斯动力管道未显示蓝海的所有阶段

Jenkins pipeline 詹金斯动力管道未显示蓝海的所有阶段,jenkins-pipeline,jenkins-blueocean,Jenkins Pipeline,Jenkins Blueocean,我有一个Jenkins管道脚本,其中的关键部分如下所示。一切似乎都在后台执行,但没有在蓝海上显示 我是做错了什么,还是UI上有某种缺陷 def projects = [ [name: 'API', folder: 'api-tests', repo: 'url'], [name: 'UI',folder: 'selenium-tests', repo: 'url'] ] // Create List of build stages to suit def jobs = [:]

我有一个Jenkins管道脚本,其中的关键部分如下所示。一切似乎都在后台执行,但没有在蓝海上显示

我是做错了什么,还是UI上有某种缺陷

def projects = [
    [name: 'API', folder: 'api-tests', repo: 'url'],
    [name: 'UI',folder: 'selenium-tests', repo: 'url']
]

// Create List of build stages to suit
def jobs = [:]

pipeline {
    agent {
        kubernetes {
            cloud "url"
            yaml """contents"""
        }
    }
    stages {
        stage('Downstream Testing') {
            steps {
                script{
                    // Set up List<Map<String,Closure>> describing the builds
                    projects.each { project ->
                        print "Adding stages for ${project.folder}"
        
                        jobs[project.name] = {
                            stage("Checkout Project") {
                                ...
                            }
                            stage("Smoke Tests") {
                                dir("${project.folder}") {
                                        container('maven') {
                                            // Run the maven build
                                            sh """mvn package test"""
                                        }
                                    }
                                }
                            }
                    }
                    
                    // Run all Nth step for all Projects in Parallel. 
                    parallel jobs
                }
            }   
        }
    }
}
def项目=[
[name:'API',folder:'API tests',repo:'url'],
[名称:'UI',文件夹:'selenium tests',repo:'url']
]
//创建适合的构建阶段列表
def作业=[:]
管道{
代理人{
库伯内特斯{
云“url”
yaml“目录”
}
}
舞台{
阶段(“下游测试”){
台阶{
剧本{
//设置描述构建的列表
projects.each{project->
打印“为${project.folder}添加阶段”
作业[项目名称]={
阶段(“结帐项目”){
...
}
阶段(“烟雾测试”){
目录(“${project.folder}”){
容器('maven'){
//运行maven构建
sh“mvn包测试”
}
}
}
}
}
//并行运行所有项目的所有第n步。
平行作业
}
}   
}
}
}

是的,Blueocean UI中似乎有一个bug

该场景对于脚本化管道很好,但在声明性管道中同样失败

脚本化管道

def j=[:]
node {
    [
        [name: "api", folder: "api"],
        [name: "ui", folder: "ui"]
    ].each { m -> 
        j[m.name] = {
            stage('a') {
                echo "A"
            }
            stage('b') {
                echo "B"
            }
        }
    }
    parallel j
}
pipeline {
    agent any;
    stages {
        stage("parallel") {
            steps {
                script {
                    def j=[:]
                    [
                        [name: "api", folder: "api"],
                        [name: "ui", folder: "ui"]
                    ].each { m -> 
                        j[m.name] = {
                            stage('a') {
                                echo "A"
                            }
                            stage('b') {
                                echo "B"
                            }
                        }
                    }
                    parallel j
                }
            }
        }
    }
}

声明性管道

def j=[:]
node {
    [
        [name: "api", folder: "api"],
        [name: "ui", folder: "ui"]
    ].each { m -> 
        j[m.name] = {
            stage('a') {
                echo "A"
            }
            stage('b') {
                echo "B"
            }
        }
    }
    parallel j
}
pipeline {
    agent any;
    stages {
        stage("parallel") {
            steps {
                script {
                    def j=[:]
                    [
                        [name: "api", folder: "api"],
                        [name: "ui", folder: "ui"]
                    ].each { m -> 
                        j[m.name] = {
                            stage('a') {
                                echo "A"
                            }
                            stage('b') {
                                echo "B"
                            }
                        }
                    }
                    parallel j
                }
            }
        }
    }
}

您对该管道的目标是什么?您是否计划并行运行
签出
冒烟测试
或并行运行两个阶段,即api和ui与
签出
冒烟测试
?每个分支将有一系列阶段。每个分支应并行运行。每个分支都是一个不同的项目。这就是为什么每个都有检查和测试。看起来你是对的。我在答案中添加了我的场景。如果您只是将声明性转换为脚本化,UI将显示正确创建的问题。我已经看到了完全相同的问题,我们也只看到了第一个阶段。