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

Jenkins + Gradle + Artifactory:无法读取生成的构建信息

吴鸿彩
2023-03-14
问题内容

我正在尝试使用称为Gradle工具的Jenkins Pipeline将人工制品推到Artifactory。

我正在关注在GitHub上发布的示例:

  • 例1
  • 例2

我的詹金斯管道脚本:

stage('Perform Gradle Release') {

    //ssh-agent required to perform GIT push (when tagging the branch on release)
    sshagent([git_credential]) {
        sh "./gradlew clean release unSnapshotVersion -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=${release_version} -Prelease.newVersion=${development_version}"
    }

    // Create an Artifactory server instance
    def server = Artifactory.server('my-artifactory')

    // Create and set an Artifactory Gradle Build instance:
    def rtGradle = Artifactory.newGradleBuild()
    rtGradle.resolver server: server, repo: 'libs-release'
    rtGradle.deployer server: server, repo: 'libs-release-local'

    //Use Gradle Wrapper
    rtGradle.useWrapper = true

    //Creates buildinfo
    def buildInfo = Artifactory.newBuildInfo()
    buildInfo.env.capture = true
    buildInfo.env.filter.addInclude("*")

    // Run Gradle:
    rtGradle.run rootDir: "./", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish', buildInfo: buildInfo

    // Publish the build-info to Artifactory:
    server.publishBuildInfo buildInfo

}

我的Gradle文件非常轻巧,我只是使用插件Gradle Release
Plugin
执行Gradle发布。

执行管道时,它失败并显示以下消息:

:artifactoryPublish

BUILD SUCCESSFUL

Total time: 17.451 secs
ERROR: Couldn't read generated build info at : /tmp/generated.build.info4898776990575217114.json
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
hudson.model.Run$RunnerAbortedException
    at org.jfrog.hudson.pipeline.Utils.getGeneratedBuildInfo(Utils.java:188)
    at org.jfrog.hudson.pipeline.steps.ArtifactoryGradleBuild$Execution.run(ArtifactoryGradleBuild.java:127)
    at org.jfrog.hudson.pipeline.steps.ArtifactoryGradleBuild$Execution.run(ArtifactoryGradleBuild.java:96)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousStepExecution.start(AbstractSynchronousStepExecution.java:40)
...
Finished: FAILURE

当我在服务器上检查时,没有这样的文件/tmp/generated.build.info4898776990575217114.json(用户当然有权写入/
tmp)。

谢谢你的帮助。

[编辑]很奇怪,但是我发现了一些名为“
buildInfo2408849984051060030.properties”的文件,其中包含这些信息。名称不相同,格式也不相同,这些文件存储在我的Jenkins机器上,而不是我的从属计算机执行管道中。


问题答案:

感谢@ tamir-hadad,它的确已在2.8.2中修复。



 类似资料:
  • 目前,我尝试配置Jenkins,这样我就可以自动进行发布构建。它应该将版本号从快照更改为发布版本,并执行所有SVN提交操作。完成后,它应该将其切换回新的快照版本并提交。在我从maven切换到gradle之前,相同的插件工作正常。 我已经创建了一个gradle构建,可以正常工作。它正在从gradle中的属性“version”读取版本。属性文件。此版本是gradle版本中使用的版本。还可以运行“art

  • 我有两个jenkins作业,第一个作业向artifactory发布一个jar文件,并向工件添加一个属性(提交id)。第二个作业总是从artifactory中提取最新版本的jar,但它还需要与该工件关联的属性。我们正在使用gradle进行构建。有没有办法进入gradle或者我们有其他选择吗? 编辑:作业不是管道的一部分。这意味着它们是独立的作业,第二个作业触发另一个存储库更改。

  • 问题内容: 我是使用USB SSH插件在Linux服务器上运行命令的人,我使用SSH启动了一个脚本,该脚本花费了超过1个小时的时间才能运行,我不想等待那么多时间,因此我将30秒钟的时间设置为Exec超时。但是它显示错误ERROR:发布时发生异常,异常消息[Exec超时或在30,000 ms后被中断],并且不稳定。我不想使我的构建不稳定,因为我使用了詹金斯文本查找器来稳定该构建。在那个詹金斯文本查找

  • 我有点搞不清楚该怎么做。 我有一个Jfrog Maven回购。在我的Jenkins pipeline中,我只是使用< code>mvn deploy进行部署。 但我也想获取构建信息。 有一个Jenkins插件,您可以像这样在管道中访问: 但是还有一个特定于Maven的东西: 看起来好像如果你使用< code>newMavenBuild()它会为你运行mvn?我不想那样。我想运行我自己的mvn命令,

  • 我在OS X 10.11.3上使用Android Studio 2.0 Preview 9

  • Gradle版本:5.1 Java版本:11 我在gradle文件中定义了以下任务来生成QueryDSL类: 下面是我的依赖项块: 如果我执行'gradlew generateQClasses,我会在日志中看到以下内容: 它失败,错误是文件已经存在。如何配置此任务以覆盖文件(如果存在)? 此外,上面的配置是根项目的配置,它有5个子项目。能够覆盖其中一个子项目中的文件,但不能覆盖其他子项目中的文件(