当前位置: 首页 > 面试题库 >

Jenkins-MavenBuild.getMavenArtifacts()返回Null

澹台景辉
2023-03-14
问题内容

从Jenkins 1.460开始,调用getMavenArtifacts()的实例将MavenBuild返回null,而以前可以正常工作。

Jenkins API是否发生了重大更改,或者这是Jenkins错误?

我正在执行的代码是构建后的System Groovy脚本,该脚本将构建的Maven版本作为环境变量公开,供Jenkins构建过程中的后续步骤使用:

import hudson.model.*;
import hudson.util.*;

def thr = Thread.currentThread();
def currentBuild = thr?.executable;
def mavenVer = currentBuild.getMavenArtifacts().getModuleRecords()[0].mainArtifact.version;
def newParamAction = new hudson.model.ParametersAction(new hudson.model.StringParameterValue("MAVEN_VERSION", mavenVer));
currentBuild.addAction(newParamAction);

问题答案:

我找到了一种解决方法,尽管我不知道为什么对API进行了未经通知的重大更改-希望它会得到解决。

替代:

def mavenVer = currentBuild.getMavenArtifacts().getModuleRecords()[0].mainArtifact.version;

对于

def mavenVer = currentBuild.getParent().getModules().toArray()[0].getVersion();


 类似资料:
  • 我正在尝试使用BitBucket GIT存储库设置Jenkins,但Jenkins控制台总是给我以下错误代码: 我尝试过很多不同的方法,但总是失败。我的服务器上允许9418端口上的通信量。服务器处于1 Gbps连接上。

  • 问题内容: 我正在尝试为jenkins groovy脚本获取分支的名称。我无法获取当前的分支名称。我尝试以下方法: 这是输出-它始终返回null。 我想念什么吗? 问题答案: 此变量仅在多分支管线中起作用: BRANCH_NAME对于多分支项目,此名称将设置为正在构建的分支的名称,例如,如果您希望从主分支而不是功能分支部署到生产中。 我在正常的管道中进行测试

  • 问题内容: 我使用Jenkins(在Windows计算机上)作业通过Ant为不同的目标编译一些代码。为此,我将对ant目标的调用包装在(windows)批处理循环中,如下所示: 那是我的第一个主意……但是即使(例如)target1失败,此代码也可以成功构建。因此,我在Windows批处理构建步骤中增加了一些内容,以获取更多概述。另外,我还用了cecekdout代码来获得与Jenkins本地计算机相

  • 有我的密码 我怎样才能得到异常原因?在我的例子中,如果我运行gradle,从命令行安装(没有jenkins)是:错误:不兼容的类型:不能转换为boolean 但我会在jenkins作业控制台输出中看到错误

  • 问题内容: 使用GitHub命令,我可以: 我与GitHub的连接正常(没问题),但是与Jenkins的连接出现此错误: 公钥有这个问题吗? 我在/ 下使用。 问题答案: 这个错误: stderr:权限被拒绝(公钥)。致命:远端意外挂断 表示Jenkins尝试使用错误的ssh密钥连接到github。 你应该: 确定jenkins的运行用户,例如。’build’或’jenkins’ 在尝试执行克隆的