【问题标题】:gradle artifactorypublish: jenkins pipeline does not publish propertiesgradle artifactorypublish:詹金斯管道不发布属性
【发布时间】:2017-11-07 21:07:08
【问题描述】:

我正在尝试设置 jenkins 管道以将 zip 文件发布到 jfrog artifactory。

我正在使用com.jfrog.artifactory 插件来执行此操作。这在命令行 gradle 中效果很好,我可以运行 artifactoryPublish 任务来发布工件并将它们绑定回模块,然后再绑定到工件。

工件与属性一起显示:

build.name = `projectname` 
build.number = `some large number`

我可以从它们点击到构建/模块并返回到工件。

但是,当我从 jenkinsfile 管道运行此程序时,工件会被发布并绑定回模块,但随后模块无法成功地将模块绑定回工件。

工件不接收 build.name 和 build.number 属性,我无法从模块单击返回工件,因为模块无法找到或解析返回工件的路径(zip 文件和生成的 pom )。

我正在传递来自 jenkins 的参数,例如: ORG_GRADLE_PROJECT_buildInfo.build.number=${env.BUILD_NUMBER} 似乎适用于其他项目......但无论出于何种原因,我都无法动摇它。

如果这有助于调试,我可以包含更多 jenkinsfile,但我实际上只是检查一个存储库并尝试发布它。

我一直在这里大量阅读文档:

https://www.jfrog.com/confluence/display/RTF/Gradle+Artifactory+Plugin

并且无法通过-Pproject 的东西使其工作。

有人知道我还能尝试什么吗?我真的不想直接使用 jenkins pipeline artifactory 插件,因为能够从命令行部署也太好了。

build.gradle:

publishing {
    publications {

        ManualUpdaterPackage(MavenPublication){
            artifact assembleManualUpdaterPackage
        }
    }
}

artifactory {
    contextUrl = "${artifactoryUrl}"   //The base Artifactory URL if not overridden by the publisher/resolver
    publish {
        defaults {
            publications('ManualUpdaterPackage')
        }
        repository {
            repoKey = project.version.endsWith('-SNAPSHOT') ? snapshotRepo : releaseRepo
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }

    }
}
task assembleManualUpdaterPackage (type: Zip){
    dependsOn anotherTask
    from (packageDir + "/")
    include '**'
//    archiveName "manualUpdaterPackage-${version}.zip"
    destinationDir(file(manualUpdaterZipDir))
}

jenkins 文件截图:

withCredentials(
        [
                [
                        $class          : 'UsernamePasswordMultiBinding',
                        credentialsId   : 'validcreds',
                        passwordVariable: 'ORG_GRADLE_PROJECT_artifactory_password',
                        usernameVariable: 'ORG_GRADLE_PROJECT_artifactory_user'
                ]
        ]
) {
    withEnv(
            [                      
                    "ORG_GRADLE_PROJECT_buildInfo.build.number=${env.BUILD_NUMBER}",
                    "ORG_GRADLE_PROJECT_buildInfo.build.name=${artifactName}",
                    "ORG_GRADLE_PROJECT_buildInfo.build.url=${env.JOB_URL}"
            ]
    ) {
        sh 'chmod +x gradlew'
        sh "./gradlew --no-daemon clean artifactoryPublish"
    }

}

【问题讨论】:

    标签: jenkins gradle plugins jenkins-pipeline artifactory


    【解决方案1】:

    https://www.jfrog.com/confluence/display/RTF/Working+With+Pipeline+Jobs+in+Jenkins#WorkingWithPipelineJobsinJenkins-GradleBuildswithArtifactory

    最终我的同事建议改用 Artifactory Pipeline Gradle 插件。与它一起工作非常好,我们在这方面取得了更快的成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-09
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多