gpt4 book ai didi

java - 如何在可用的 Jenkins 奴隶上平均分割和分配测试?

转载 作者:行者123 更新时间:2023-11-30 10:12:37 24 4
gpt4 key购买 nike

假设我们有一个包含 1000 个测试类的 Java 项目。
假设我们有 4 个 Jenkins 奴隶。

有没有办法在 4 个可用的从机上拆分并运行 250 (1000/4) 个测试类?

我找到的最接近的是 Parallel Test Executor Plugin但根据评论,它需要先前成功的构建才能拆分测试。

我确信这是提高测试速度的简单解决方案,但我找不到很多关于这种情况的资源?没有人想拆分和分发这些测试吗?这可能吗?

我可以手动创建对应于 250 个测试的 4 个作业,但我不想手动管理拆分。我们很快就会忘记新的测试。按包拆分也是可以接受的。

我正在使用gradle

我是 Jenkins 的新手,我已经创建了简单的自由式作业,可以自动执行我手动执行的操作。我希望改进此自动化设置。

最佳答案

我建议使用 Jenkins 管道语法创建 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

关于java - 如何在可用的 Jenkins 奴隶上平均分割和分配测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com