标签: jenkins-build-flow

当Maven单元测试失败时,如何使Jenkins构建失败?

我正在使用Jenkins,Maven 3.1和Java 1.6.我在Jenkins设置了以下Maven工作,具有以下目标和选项......

clean install -U -P cloudbees -P qa
Run Code Online (Sandbox Code Playgroud)

下面是我的pom.xml surefire配置...

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
                <reuseForks>true</reuseForks>
                <argLine>-Xmx2048m -XX:MaxPermSize=512M </argLine>
                <skipTests>false</skipTests>
        </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是,当我的单元测试失败时,Jenkins控制台输出仍然显示"BUILD SUCCESS"并且构建被标记为"不稳定"而不是完全失败.我如何配置Jenkins(或Maven,如果它是什么原样)的东西,以便我的构建失败(不会变得不稳定或通过),如果任何单元测试失败?

以下是控制台输出的内容

17:08:04   MyProjectOrganizationControllerTest.testRecoverFromError » IllegalState Failed to...
17:08:04   MyProjectOrganizationControllerTest.testVerifyDistrictListPopulated » IllegalState
17:08:04   MyProjectOrganizationControllerTest.testUpdateSchool » IllegalState Failed to loa...
17:08:04   MyProjectOrganizationControllerTest.testDeleteSchool » IllegalState Failed to loa...
17:08:04   MyProjectOrganizationControllerTest.testVerifyOrgListPopulatedPrivateSchoolOrgType » IllegalState
17:08:04   MyProjectOrganizationControllerTest.testSubmitMultipleParams » IllegalState Faile...
17:08:04 
17:08:04 Tests run: 155, Failures: 0, Errors: 154, Skipped: 1
17:08:04 
17:08:04 [ERROR] There are test failures.
17:08:04 
17:08:04 …
Run Code Online (Sandbox Code Playgroud)

maven jenkins maven-surefire-plugin jenkins-build-flow

49
推荐指数
2
解决办法
3万
查看次数

如何在Jenkins工作流构建期间修复NotSerializableException错误?

当我在Jenkins工作流(Jenkins 1.609.1,工作流1.8)上运行以下代码时,我收到'NotSerializableException'错误(也在下面).但是,如果我将"构建作业"移到"for"范围之外,它可以正常工作(作业已激活).有什么想法为什么会这样?

node('master') { 
ws('/opt/test) {
def file = "/ot.property"
def line = readFile (file)
def resultList = line.tokenize()
for(item in resultList )
  {
build job: 'testjob_1'
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

得到错误:

Running: End of Workflow 
java.io.NotSerializableException: java.util.ArrayList$Itr  
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)  


.....
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-build-flow jenkins-pipeline

16
推荐指数
2
解决办法
2万
查看次数

Jenkins构建流程与工作流程(管道)插件

我注意到Jenkins有(至少)两个编排选项

我首先找到了Build Flow并实现了一个编排工作,它似乎可以满足我们的需求.切换到Pipeline有什么好处吗?我对切换到Pipeline的想法是

  • Pro - 项目似乎比Build Flow更活跃
  • Con - DSL看起来要复杂得多

jenkins jenkins-plugins jenkins-build-flow jenkins-workflow

8
推荐指数
1
解决办法
8841
查看次数

使用Groovy从Jenkins master访问节点从属文件

我正在使用Jenkins Build Flow插件来实现并行化.Groovy DSL执行某些文件操作.即使该选项Restrict where this project can be run设置为在特定从站上运行作业,DSL也在主站上运行.这不是预期的.

有人能告诉我如何限制DSL在指定的奴隶上运行吗?即使有一种方法我们可以通过DSL访问从属文件系统,这应该工作.

一般来说,我们如何使用Groovy从Jenkins master访问节点slave上的文件?

def fp = new hudson.FilePath(build.workspace.channel, "/srv/jenkins/workspace/myworkspace_on_slave_node")
assert fp.exists()      // returns true :)

def ant = new AntBuilder()

if (fp != null) {
  def scanner = ant.fileScanner {    // fails here :(, says /srv/jenkins/workspace/myworkspace_on_slave_node not found
    // grab ALL files requested to be run
    fileset(dir: "$fp", includes: "**/*.java")
  }

  // now lets iterate over - print - and count test files
  int numFiles = 0
  for …
Run Code Online (Sandbox Code Playgroud)

file-io groovy jenkins jenkins-plugins jenkins-build-flow

5
推荐指数
1
解决办法
1万
查看次数

即使先前的作业在Jenkins Build流程中失败,依序运行下一个作业

我有一个构建流程,该流程按顺序构建4个作业

例如;

build(Job 1)
build(Job 2)
build(Job 3)
build(Job 4)
Run Code Online (Sandbox Code Playgroud)

我也想运行作业4,即使先前的任何作业也失败了。如何在构建流程中做到这一点?

jenkins jenkins-plugins jenkins-build-flow jenkins-workflow

3
推荐指数
1
解决办法
4011
查看次数

使用循环在Jenkins中使用build-flow插件运行并行构建

我正在使用构建流程插件在Jenkins中并行运行任务.最初这是有效的:

parallel (
    { build("jobX", param: params["inputVal1"])
    },
    {build("jobX",  param: params["inputVal2"])
    }
)
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要我在某种循环中写这个,因为作业的数量是动态的.我想做这样的事情(概念上):

parallel
(
    for(int i=1; i<=numOfJobs; i++)
    {
        build("jobX", param: params["inputVal" + i])
    }
)
Run Code Online (Sandbox Code Playgroud)

Jenkins Buildflow插件提供了一个答案:如何并行创建可变数量的作业?,但它并不完全符合我的需要.

parallel-processing groovy loops jenkins jenkins-build-flow

2
推荐指数
1
解决办法
4505
查看次数

在jenkins中使用带循环的构建流插件的并行作业

我正在使用构建流程插件构建jenkins流程,该插件将获取所有作业,将名称与正则表达式进行比较,如果匹配则会触发作业的构建.
我有这个完美的工作:

import jenkins.model.Jenkins
import java.util.regex.*
Pattern myRegex = ~/release_status.*/
for (item in jenkins.model.Jenkins.instance.items) 
{
  if (item.name ==~ myRegex) {
    build( "$item.name" )
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这需要很长时间来构建所有匹配的工作(现在有20个,但可能还有更多).
我试图让这个并行运行每个作业,但我无法弄清楚groovy语法.
我尝试了3种不同的方式:

import jenkins.model.Jenkins
import java.util.regex.*
Pattern myRegex = ~/release_status.*/
parallel (
  {
    for (item in jenkins.model.Jenkins.instance.items) 
    {
      if (item.name ==~ myRegex) {
        build( "$item.name" )
      }
    }
  }
)
Run Code Online (Sandbox Code Playgroud)

^^这仍然有效,但它的工作方式与以前相同.它一次完成一项工作,并且在上一次完成之前不构建下一项工作.

import jenkins.model.Jenkins
import java.util.regex.*
Pattern myRegex = ~/release_status.*/
parallel (
  {
    for (item in jenkins.model.Jenkins.instance.items) 
    {
      if (item.name ==~ myRegex) {
        { build( …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-plugins jenkins-build-flow

2
推荐指数
1
解决办法
4477
查看次数