• Jenkins Pipeline Build 不下载最新的包


    问题

    我改了 moudule_A 和 module_B。
    并且,moudule_A 依赖于 module_B。
    在本地测试通过了。

    但是,提交代码之后,自动 build 的 Jenkins pipeline 挂了。

    报错信息提炼如下,前面是一堆 plugin job 正常跑,然后到 compile 这一步就报错: CLASS NOT FOUND。

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] Building MY_APP
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ MY_APP ---
    [INFO] --- buildnumber-maven-plugin:1.4:create (generate-timestamp) @ MY_APP ---
    [INFO] --- buildnumber-maven-plugin:1.4:create (generate-buildnumber) @ MY_APP ---
    [INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (default-prepare-agent) @ MY_APP ---
    [INFO] --- buildnumber-maven-plugin:1.4:create-metadata (create-metadata) @ MY_APP ---
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MY_APP ---
    [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ MY_APP ---
    [INFO] Changes detected - recompiling the module!
    [INFO] Compiling 122 source files to /home/gdevopsc/jenkins-am/workspace/MY_APP/target/classes
    [INFO] -------------------------------------------------------------
    [WARNING] COMPILATION WARNING : SOME XXX CLASS NOT FOUND
    

    解决1

    我首先猜想的是,module_B 没有 upload 到 nexus 上去。

    因为 pipeline 只配置了自动 build ,而不会自动 deploy 。(否则 nexus 空间很快就会爆满。)

    于是,我手动 trigger 了一个单独的 module_B 的 deploy job。保证 nexus 上有最新的 module_B 。

    但是,回去再跑 pipeline 还是失败。

    解决2

    于是,我看了一眼 moudule_A 的 Jenkinsfile,如下:

    pipeline {
     agent { label 'linux && jdk-8-zulu' }
    
    	tools
    	{
    		git 'Git'
    		maven 'Maven 3'
    		jdk 'Zulu JDK 8'
    	}
    
      environment{
        MAVEN_OPTS="-Xmx1024m -Xss512m"
      }
      stages{
        stage('Build and test'){
    
          steps{
            script{
              withMaven (maven: 'Maven') {
                sh("mvn clean install")
              }
            }
          }
        }
      }
    

    问题出在 mvn build 命令。

    因为服务器上 maven 的 local repo 有 module_B 的 snapshot 缓存,且 version 没有变,所以它没有下载最新的,而是直接使用了缓存。

    这里,需要加一个 -U 参数,使得 maven 每次都会尝试下载最新的 snapshot versions 。

    即,需要改成如下:mvn -U clean install

    参考

  • 相关阅读:
    【Day1】1.了解Python
    fastadmin 隐藏操作栏按钮
    fastadmin中上传配置
    第 2 讲高等数学—两个重要的极限定理(万门大学)
    第 1 讲高等数学—元素和极限(万门大学)
    人工智能如何改变我们的未来生活
    fastadmin 中的日期时间,日期时间范围范围插件和key-value插件
    fastadmin 金额 字段类型及html验证
    51nod 1051 最大子矩阵和(DP)
    codforces 1C Ancient Berland Circus(几何)
  • 原文地址:https://www.cnblogs.com/maxstack/p/15194921.html
Copyright © 2020-2023  润新知