我有一个运行集成测试的Jenkinsfile,它运行得很好,除了我的测试数据是硬编码的,可能会更改。
我已经创建了一个步骤来一次获取所有步骤的测试数据,以避免使用,目的是更快地并行运行集成测试。
如果我想在pre-step中获取所有的测试数据,并获取stage('Integration Tests')
下每个阶段的数据,我需要计算出在运行jenkins流水线时有多少个子阶段。这可能吗?
stage('Integration Tests'){
parallel {
stage('TestGroup 1'){
steps {
script {
sh script: 'npm run some-init-func'
sh script: 'npm run newman-run-collection --collection_file="100 tests.postman_collection.json"'
sh script: 'npm run newman-run-collection --collection_file="110 more tests.postman_collection.json"'
}
}
post {
always {
junit 'newman/*.xml'
archiveArtifacts artifacts: 'newman/*.html'
}
}
}
stage('TestGroup 2'){
steps {
script {
sh script: 'npm run some-init-func'
sh script: 'npm run newman-run-collection --collection_file="200 tests.postman_collection.json"'
sh script: 'npm run newman-run-collection --collection_file="210 even more tests.postman_collection.json"'
}
}
post {
always {
junit 'newman/*.xml'
archiveArtifacts artifacts: 'newman/*.html'
}
}
}
}
1条答案
按热度按时间3qpi33ja1#
我看到了两种方法:编写一些Groovy代码或重构管道。
选项01
您可能可以将Pipeline重构为类似下面的内容。
选项02
这里有一种使用Groovy实现这一点的方法。让我们假设您有一个唯一的名称,它带有子阶段的公共前缀。在这种情况下,您可以读取管道定义并计算存在的唯一字符串。类似于下面的方法。