我正在Jenkins上进行性能测试。测试可能包括同一容器的多个实例以生成必要的负载。我无法对实例数进行硬编码,因为它会因测试参数而异。 我尝试使用以下代码:
pipeline {
agent any
stages {
stage('Running Jmeter') {
agent {
kubernetes {
label "jmeter_tests_executor"
yaml '''
apiVersion: batch/v1
kind: Job
metadata:
name: jmeter
namespace: jenkins
spec:
parallelism: 2
backoffLimit: 1
ttlSecondsAfterFinished: 100
...
但是它不起作用。它挂在pod调度上(如果直接在没有Jenkins的kubernetes集群上应用此清单,则工作正常)。
如果有人有经验,请分享您的解决方法或想法,以实现该想法。
答案 0 :(得分:0)
也许尝试这样的事情
stage("RUN LOAD TEST") {
steps {
script {
//params.each creates an array of stages
paramsToTest.each {param ->
load["load test"] = {
stage("Executing run ${param}") {
agent {
kubernetes {
label "jmeter_tests_executor"
yaml '''
apiVersion: batch/v1
kind: Job
metadata:
name: jmeter
namespace: jenkins
spec:
parallelism: 2
backoffLimit: 1
ttlSecondsAfterFinished: 100
...
'''
}
}
steps {
<EXECUTE LOAD TEST COMMAND>
}
}
}
parallel(load) //actually executes the parallel stages
}
}
}
}
这是使用一个事物数组,然后基于该数组生成阶段。阶段中的agent参数应该告诉Jenkins每次执行并行创建一个新的pod。