我有下面的管道,我需要并行化javadoc的生成和发布,以及集成测试报告的执行和发布。
我正在尝试以下方法,但流水线似乎没有并行化。
stage('Generate and Publish Javadoc, Run and publish Integration Tests, Run and publish Mutation Tests') {
parallel {
stage('javadoc'){
stages{
stage('Generate and publish Javadoc on Linux') {
when { expression { env.OS == 'UNIX' }}
steps {
dir('') {
sh './gradlew javadoc'
javadoc javadocDir: 'build/docs/javadoc', keepAll: true
}
}
}
stage('Generate and publish Javadoc on Windows') {
when { expression { env.OS == 'BAT' }}
steps {
dir('') {
bat 'gradlew.bat javadoc'
javadoc javadocDir: 'build/docs/javadoc', keepAll: true
}
}
}
}
}
stage('integration test'){
stages{
stage('Integration Tests on Linux') {
when { expression { env.OS == 'UNIX' }}
steps {
dir('') {
sh './gradlew integrationTest'
junit '**/build/test-results/integrationTest/*.xml'
}
}
}
stage('Integration Tests on Windows') {
when { expression { env.OS == 'BAT' }}
steps {
dir('') {
bat 'gradlew.bat integrationTest'
junit '**/build/test-results/integrationTest/*.xml'
}
}
}
stage('Publish Integration Tests Report') {
steps {
dir('') {
publishHTML(target: [allowMissing : false,
alwaysLinkToLastBuild: false,
keepAll : true,
reportDir : 'build/reports/tests/integrationTest',
reportFiles : 'index.html',
reportName : 'Integration Tests Report'])
}
}
}
}
}
}
}
下面的代码使用了标签parallel,并且在它里面有一个stage,stage里面有多个stage。
1条答案
按热度按时间tyg4sfes1#
因此,我希望标记parallel只识别最外部的阶段。
不,Jenkins应该也能识别嵌套的阶段。我使用了与您所拥有的类似的管道结构,管道分支为三个部分,每个部分包含多个阶段。
就我所见,你的管道语法没有问题,它的阶段和步骤与我在管道中使用的阶段和步骤几乎相同。您确定管道不是并行运行的吗?使用类似于Jenkins的蓝海视图应该有助于您正确地可视化这些步骤。如果这些步骤不是并行运行的,它们是按顺序运行的吗?