我有一个 Jenkins 声明式管道,有 2 个不同的测试阶段,两个阶段都配置为生成
allure-results
我想将这两个
allure-reports
合并为一个 allure-report
并将其呈现给 Jenkins Pipeline 工作区中的用户...
pipeline {
agent none
stages {
stage('Sanity') {
agent { label 'sanity-node' }
steps {
sh 'pytest --suite sanity'
stash name: 'sanity-results', includes: 'allure-results/**'
}
}
stage('Regression') {
agent { label 'regression-node' }
steps {
sh 'pytest --suite regression'
stash name: 'regression-results', includes: 'allure-results/**'
}
}
}
post {
always {
node('master') {
dir('merged-allure-results') {
unstash 'sanity-results'
unstash 'regression-results'
}
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: [[path: 'merged-allure-results']]
])
}
}
}
}
但由于某种原因它似乎不起作用!我在这里做错了什么?怎样才能达到预期的效果?
Allure 不知道嵌套目录,因此您需要将两者作为结果传递。像这样的东西:
post {
always {
node('master') {
dir('merged-allure-results') {
unstash 'sanity-results'
unstash 'regression-results'
}
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: [
[path: 'merged-allure-results'],
[path: 'regression-results']
]
])
}
}
}
此外,我会仔细检查这些存储是否已存储到不同的目录中。我不记得结果的结构,但我怀疑仅通过将所有内容复制到一个地方就可以安全地合并它们。