Jenkins pipeline 詹金斯动力管道未显示蓝海的所有阶段
我有一个Jenkins管道脚本,其中的关键部分如下所示。一切似乎都在后台执行,但没有在蓝海上显示 我是做错了什么,还是UI上有某种缺陷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 = [:]
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将显示正确创建的问题。我已经看到了完全相同的问题,我们也只看到了第一个阶段。