zoukankan      html  css  js  c++  java
  • 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

    参考

  • 相关阅读:
    Gym
    HDU 4087 ALetter to Programmers (三维坐标旋转 矩阵 + 矩阵快速幂)
    POJ 3845 Fractal (向量旋转,好题)
    HDU 1700 Points on Cycle (向量旋转 + 圆内接三角形周长和面积最大的是正三角形)
    POJ 1271 Nice Milk (半平面交应用)
    POJ 2540 Hotter Colder (半平面交应用 + 向量旋转)
    luoguP3705 [SDOI2017]新生舞会
    luoguP4123 [CQOI2016]不同的最小割
    luoguP2046 [NOI2010]海拔
    luoguP3227 [HNOI2013]切糕
  • 原文地址:https://www.cnblogs.com/maxstack/p/15194921.html
Copyright © 2011-2022 走看看