【问题标题】:Jenkins Maven Build -> Change DirectoryJenkins Maven 构建 -> 更改目录
【发布时间】:2018-03-28 21:10:32
【问题描述】:

我查看了一些帖子,但找不到解决问题的方法。在 Jenkins 中,我有一个配置了 Maven 项目的管道。我可以毫无问题地在本地运行测试,并且测试结果在目标文件夹中生成。问题是测试没有通过 Jenkins 构建过程,因为 jenkins 中的文件夹结构不同。在错误消息中,我看到它没有使用正确的路径:

[ERROR] Command was /bin/sh -c cd /var/lib/jenkins/jobs/test/workspace

路径应该类似于

/var/lib/docker/volumes/jenkins-data_var_lib_jenkins`/_data/jobs/test/workspace#

在运行 Jenkins 的服务器上,lib 文件夹下没有 jenkins 文件夹。我进行了搜索,发现 jenkins 文件夹位于 lib/docker/volumes 下方。但不知何故,在构建过程中控制台说

Running on master in /var/lib/jenkins/jobs/test/workspace

在哪里可以进行此更改? 任何帮助深表感谢。我的 Jenkinsfile 是从我正在使用的框架生成的,如下所示:

#!/usr/bin/env groovy

node {

    stage('checkout') {
        checkout scm
    }

    stage('check java') {
        sh "java -version"
    }

    stage('clean') {
        sh "chmod +x mvnw"
        sh "./mvnw clean"
    }

    stage('install tools') {
        sh "./mvnw com.github.eirslett:frontend-maven-plugin:install-node-and-yarn -DnodeVersion=v6.11.3 -DyarnVersion=v1.1.0"
    }

    stage('yarn install') {
        sh "./mvnw com.github.eirslett:frontend-maven-plugin:yarn"
    }


    stage('backend tests') {
        try {
            sh "./mvnw test"
        } catch(err) {
            throw err
        } finally {
            junit '**/target/surefire-reports/TEST-*.xml'
        }
    }

    stage('frontend tests') {
        try {
            sh "./mvnw com.github.eirslett:frontend-maven-plugin:yarn -Dfrontend.yarn.arguments=test"
        } catch(err) {
            throw err
        } finally {
            junit '** /target/test-results/karma/TESTS-*.xml'
        }
    } 

    stage('packaging') {
        sh "./mvnw package -Pprod -DskipTests"
        archiveArtifacts artifacts: '**/target/*.war', fingerprint: true
    }

}

构建过程中的错误报告如下(就像我上面说的,var/lib/下没有jenkins文件夹。我认为两个不同的工作空间有问题,但是我该如何适应呢?

     Started by an SCM change
        Obtained Jenkinsfile from git https://github.com/....git
        [Pipeline] node
        Running on master in /var/lib/jenkins/jobs/test/workspace
        [Pipeline] {
        [Pipeline] stage
        [Pipeline] { (checkout)
        [Pipeline] checkout
         > git rev-parse --is-inside-work-tree # timeout=10
        Fetching changes from the remote Git repository
         > git config remote.origin.url https://github.com/.....git # timeout=10
        Fetching upstream changes from https://github.com/.......git
         > git --version # timeout=10
        using GIT_ASKPASS to set credentials 
         > git fetch --tags --progress https://github.com/........git +refs/heads/*:refs/remotes/origin/*
         > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
         > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
        Checking out Revision .....
    (refs/remotes/origin/master)
         > git config core.sparsecheckout # timeout=10
         > git checkout -f ........
        Commit message: "Merge branch 'master' of https://github.com/......"
         > git rev-list ....... # timeout=10
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] stage
        [Pipeline] { (check java)
        [Pipeline] sh
        [workspace] Running shell script
        + java -version
        openjdk version "1.8.0_112"
        OpenJDK Runtime Environment (build 1.8.0_112-b15)
        OpenJDK 64-Bit Server VM (build 25.112-b15, mixed mode)
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] stage
        [Pipeline] { (clean)
        [Pipeline] sh
        [workspace] Running shell script
        + chmod +x mvnw
        [Pipeline] sh
        [workspace] Running shell script
        + ./mvnw clean
        [INFO] Scanning for projects...
       [INFO] ------------------------------------------------------------------------
        [INFO] Building Test 0.0.1-SNAPSHOT
        [INFO] ------------------------------------------------------------------------
        [INFO] 
        [INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ test---
        [INFO] Deleting /var/lib/jenkins/jobs/test/workspace/target
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESS
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 1.181 s
        [INFO] Finished at: 2017-10-18T11:32:15Z
        [INFO] Final Memory: 12M/106M
        [INFO] ------------------------------------------------------------------------
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] stage
        [Pipeline] { (install tools)
        [Pipeline] sh
        [workspace] Running shell script
        + ./mvnw com.github.eirslett:frontend-maven-plugin:install-node-and-yarn -DnodeVersion=v6.11.3 -DyarnVersion=v1.1.0
        [INFO] Scanning for projects...
        [INFO] 
        [INFO] ------------------------------------------------------------------------
        [INFO] Building Test 0.0.1-SNAPSHOT
        [INFO] ------------------------------------------------------------------------
        [INFO] 
        [INFO] --- frontend-maven-plugin:1.6:install-node-and-yarn (default-cli) @ test---
        [INFO] Node v6.11.3 is already installed.
        [INFO] Yarn 1.1.0 is already installed.
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESS
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 3.126 s
        [INFO] Finished at: 2017-10-18T11:32:20Z
        [INFO] Final Memory: 14M/106M
        [INFO] ------------------------------------------------------------------------
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] stage
        [Pipeline] { (yarn install)
        [Pipeline] sh
        [workspace] Running shell script
        + ./mvnw com.github.eirslett:frontend-maven-plugin:yarn
        [INFO] Scanning for projects...
------------------------------------------------------------------------
        [INFO] Building Test 0.0.1-SNAPSHOT
        [INFO] ------------------------------------------------------------------------
        [INFO] 
        [INFO] --- frontend-maven-plugin:1.6:yarn (default-cli) @ test---
        [INFO] Running 'yarn ' in /var/lib/jenkins/jobs/test/workspace
        [INFO] yarn install v1.1.0
        [INFO] [1/5] Validating package.json...
        [INFO] [2/5] Resolving packages...
        [INFO] success Already up-to-date.
        [INFO] Done in 2.39s.
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESS
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 4.316 s
        [INFO] Finished at: 2017-10-18T11:32:27Z
        [INFO] Final Memory: 12M/106M
        [INFO] ------------------------------------------------------------------------
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] stage
        [Pipeline] { (backend tests)
        [Pipeline] sh
        [workspace] Running shell script
        + ./mvnw test
        [INFO] Scanning for projects...
      ------------------------------------------------------------------------
        [INFO] Building Test 0.0.1-SNAPSHOT
        [INFO] ------------------------------------------------------------------------
        [INFO] 
        [INFO] --- maven-resources-plugin:3.0.1:copy-resources (default-resources) @ test---
        [INFO] Using 'UTF-8' encoding to copy filtered resources.
        [INFO] Copying 19 resources
        [INFO] Copying 11 resources
        [INFO] 
        [INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ test---
        [INFO] Using 'UTF-8' encoding to copy filtered resources.
        [INFO] Copying 19 resources
        [INFO] Copying 11 resources
        [INFO] 
        [INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-versions) @ test---
        [INFO] 
        [INFO] --- maven-resources-plugin:3.0.1:copy-resources (docker-resources) @ test---
        [INFO] Using 'UTF-8' encoding to copy filtered resources.
        [INFO] Copying 2 resources
        [INFO] 
        [INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (pre-unit-tests) @ test---
        [INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/jobs/test/workspace/target/test-results/coverage/jacoco/jacoco.exec -Djava.security.egd=file:/dev/./urandom -Xmx256m
        [INFO] 
        [INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ test---
        [INFO] Changes detected - recompiling the module!
        [INFO] Compiling 94 source files to /var/lib/jenkins/jobs/test/workspace/target/classes
        [INFO] 
        [INFO] --- maven-resources-plugin:3.0.1:testResources (default-testResources) @ test---
        [INFO] Using 'UTF-8' encoding to copy filtered resources.
        [INFO] Copying 4 resources
        [INFO] 
        [INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ test---
        [INFO] Changes detected - recompiling the module!
        [INFO] Compiling 22 source files to /var/lib/jenkins/jobs/test/workspace/target/test-classes
        [INFO] 
        [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ test---
        [INFO] Surefire report directory: /var/lib/jenkins/jobs/test/workspace/target/surefire-reports

        -------------------------------------------------------
         T E S T S
        -------------------------------------------------------
        Error: Invalid or corrupt jarfile /var/lib/jenkins/jobs/test/workspace/target/surefire/surefirebooter78063794178.....jar

        Results :

        Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD FAILURE
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 13.856 s
        [INFO] Finished at: 2017-10-18T11:32:43Z
        [INFO] Final Memory: 49M/334M
        [INFO] ------------------------------------------------------------------------
        [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project test: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
        [ERROR] Command was /bin/sh -c cd /var/lib/jenkins/jobs/test/workspace && /usr/lib/jvm/java-8-openjdk/jre/bin/java -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/jobs/test/workspace/target/test-results/coverage/jacoco/jacoco.exec -Djava.security.egd=file:/dev/./urandom -Xmx256m -jar /var/lib/jenkins/jobs/test/workspace/target/surefire/surefirebooter7806379417818082153.jar /var/lib/jenkins/jobs/test/workspace/target/surefire/surefire6244578096780428228tmp /var/lib/jenkins/jobs/test/workspace/target/surefire/surefire_09182258098509539166tmp
        [ERROR] -> [Help 1]
        [ERROR] 
        [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
        [ERROR] Re-run Maven using the -X switch to enable full debug logging.
        [ERROR] 
        [ERROR] For more information about the errors and possible solutions, please read the following articles:
        [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
        [Pipeline] junit
        Recording test results
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] }
        [Pipeline] // node
        [Pipeline] End of Pipeline
        ERROR: No test report files were found. Configuration error?
        Finished: FAILURE

【问题讨论】:

  • 如果你用过,你能分享你的 Jenkinsfile 吗?
  • 我编辑了我的问题并分享了我的 jenkinsfile。非常感谢任何帮助。

标签: maven jenkins build directory


【解决方案1】:

没有看到你的工作很难说,但你可能只需要引用 $WORKSPACE 变量来获得你的工作空间的顶部。

【讨论】:

  • 我很抱歉这个问题,但我应该在哪里做这个参考?我还分享了我的 jenkins 文件。你的意思是我必须在那里做出改变?
  • 在您使用硬编码文件路径的任何地方,使用 $WORKSPACE/[fi​​le]。 $WORKSPACE 将指向您的工作区的顶层。我没有在您的 Jenkinsfile 中看到您引用任何绝对路径的位置。你在你的构建脚本中做类似的事情吗?如果您使用的是 docker,您在 docker 中的工作空间可能与您在代理机器上看到的不同。这是从哪里来的:/bin/sh -c cd /var/lib/jenkins/jobs/test/workspace"?
  • 它来自 jenkins 在尝试构建测试时的错误报告。我已经包含了上面的错误报告。问题是,当我在运行 jenkins 的 vm 中搜索 jenkins 文件夹时,没有上面提到的路径。 vm 中的 jenkins 文件夹具有不同的工作空间路径。我认为这是我的问题,但我不知道如何解决,分别在哪里进行更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多