【问题标题】:Compile groovy project and run JUnit tests via Jenkins编译 groovy 项目并通过 Jenkins 运行 JUnit 测试
【发布时间】:2017-12-21 16:22:34
【问题描述】:

我在 Google 上搜索了很长时间,但我放弃了,Groovy + Jenkins 的流行词带来了很多错误的标志......

我有一个在 IntelliJ 中开发的 Groovy 项目,它还包含一个带有单元测试的 JUnit.groovy。现在这是 SoapUI 的脚本,不需要 Maven、Ant 或 Grails,但我希望能够在 Jenkins 上编译这些文件并在之后运行单元测试。是否可以在 Jenkins 上构建和测试这些文件?到目前为止,所有解决方案似乎都是我手动运行 groovyc(与我的存储库一起提交),然后在 JUnit.class 上运行 JUnit。

所以在我开始深入挖掘并编写 Maven、Grails 或 Ant 文件之前,是否有另一种方法不涉及在我的 git 上推送 GroovySDK?或者是否有一个简单的构建脚本,不涉及 20 个库和步骤来构建 groovy 源代码并运行 JUnit 测试:)?

我显然是 Jenkins 的新手 ;),感谢您的意见。

更新:

  • 那么对于像我这样的新手来说,需要什么?首先,我将本地源代码更改为 gradle 项目(记得在 IntelliJ 中激活 AutoImport)并激活 JUnit xml 的创建,因为我不使用 Maven 并且系统处于“离线”状态,所以无论如何我们在 git 中都有库所以我的build.gradle 是:

    version '2.5-SNAPSHOT'
    apply plugin: 'groovy'
    dependencies {
        compile fileTree(dir: '../Library', include: ['*.jar'])
    }
    test {
        reports {
            junitXml.enabled = true
            html.enabled = true
        }               
    }
    sourceCompatibility = 1.8
    
  • 通过gradle wrappergradlew.bat 设置项目的gradle wrapper

  • 然后我在我的 git-/.hooks/ 中添加了一个post-commit,所以我的 Jenkins 在通过curl http://jenkins:8080/git/notifyCommit?url=https://git.git&branches=dev 提交时被触发
  • 终于在jenkins上建立了一个管道:

    #!groovy
    
    node {
      stage('Checkout') {
        git branch: 'dev', credentialsId: 'youwish', url: 'https://git.git'
      }
    
      stage('Build') {
        dir('./Modules') {
          gradle('clean')
          gradle('compileTestGroovy')
        }
      }
    
      stage('UnitTest') {
        dir('./Modules') {
          gradle('test')
          junit '/build/test-results/**/TEST-*.xml'
        }
      }
    
      stage('IntegrationTest') {
        stage('CodeTableDownload') {
          dir('./SoapUi') {
            bat 'AutoRun.bat'
            junit '/results/**/*-JUNIT.xml'
          }
        }
      }
    }
    
    def gradle(command) {
      bat "./gradlew.bat $command"
    }
    

【问题讨论】:

    标签: jenkins gradle groovy junit


    【解决方案1】:

    有一个Groovy plugin for Jenkins 可以让您在 Jenkins 上执行 Groovy 脚本。

    但是,为什么不让 Gradle 之类的工具为您构建并运行测试呢?用于 Groovy 的最小 Gradle 构建文件可以同时完成这两项工作:

    apply plugin: 'groovy'
    
    repositories {
        jcenter()
    }
    
    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.4.12'
        testCompile 'junit:junit:4.12'
    }
    

    您不必提交 GDK,只需声明一个依赖项。

    【讨论】:

    • 感谢sn-p,我明天试试,我不明白Gradle怎么知道要编译什么?
    • 这就是 Gradle(和 Maven)的幕后魔力。如果您遵循常规的项目结构,Gradle 就会知道您的源文件和测试用例在哪里以及如何处理它们。 Gradle build-init 插件 (docs.gradle.org/current/userguide/build_init_plugin.html) 将为您构建 Java 或 Groovy 项目结构,然后您只需插入代码即可。
    • 我设法让它运行起来,感谢您的指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2016-11-03
    • 2023-04-07
    • 2010-10-18
    • 2011-11-12
    相关资源
    最近更新 更多