假设我们有一个包含1000个测试类的Java项目。
假设我们有4个Jenkins奴隶。
是否可以在4个可用的从属上拆分并运行250(1000/4)个测试类?
我找到的最接近的是Parallel Test Executor Plugin,但根据评论,它需要先前成功构建才能拆分测试。
我确定这是提高速度测试的简单解决方案,但我找不到有关这种情况的大量资源吗?没有人愿意拆分和分发这些测试吗?这可能吗?
我可以手动创建4个与250个测试相对应的作业,但是我不想手动管理拆分。很快我们将忘记新的测试。按包拆分也可以接受。
我正在使用gradle
我对Jenkins还是陌生的,并且我创建了一个简单的自由式作业,该作业可以自动化我的手动操作。 我正在寻求改进这种自动化设置。
答案 0 :(得分:1)
我建议使用Jenkins Pipeline语法创建Jenkins作业。您可以使用parallel关键字并行执行测试。在方法内部,您可以创建逻辑以确定要运行的测试。
#!/usr/bin/env groovy
def stashName = ""
def agentName = 'dart'
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '8')), pipelineTriggers([])])
timestamps{
stage("Initialize the Pipe")
{
node("dart")
{
echo "Pipeline has initialized the node."
}
}
node("dart")
{
stage("Checkout Source")
{
checkoutFromGit()
}
stage("Building Code and Testing")
{
def parallelTests = [:]
def totalNodes = 5
for (int i = 0; i < totalNodes; i++) {
def modIndex = i
parallelTests["Unit Test ${modIndex}"] = runTest(totalNodes, modIndex)
}
parallel parallelTests
}
}
stage("Finalize Build")
{
echo "Pipeline has completed."
}
}//timestamp
def runTest(numNodes, modNum) {
return {
dir('test')
{
sh 'grade test'
} //dir(ui)
}//return
}//runTest
https://jenkins.io/doc/book/pipeline/jenkinsfile/ https://jenkins.io/doc/book/pipeline/syntax/#parallel