我正在尝试使用groovy构建脚本将构建管道迁移到“ Pipeline插件”。
我的管道通常是:
我想在我的jenkins构建脚本中使用gradle变量,例如version / group等,以发布到工件中的正确文件夹。过去,人工插件会为我解决。如何做到这一点?
对于单个gradle项目,我使用如下代码:
node('master') { def version = 1.0 def gitUrl = 'some.git' def projectRoot = "" def group = "dashboard/frontend/" def artifactName = "dashboard_ui" def artifactRepo = "ext-release-local" stage "git" git branch: 'develop', poll: true, url: "${gitUrl}" dir(projectRoot) { sh 'chmod +x gradlew' stage "test" sh './gradlew clean test' stage "build" sh './gradlew build createPom' stage "artifact" def server = Artifactory.server('artifactory_dev01') def uploadSpec = """{ "files": [ { "pattern": "build/**.jar", "target": "${artifactRepo}/$group/${artifactName}/${version}/${artifactName}-${version}.jar" }, { "pattern": "pom.xml", "target": "${artifactRepo}/$group/${artifactName}/${version}/${artifactName}.pom" } ] }""" def buildInfo1 = server.upload spec: uploadSpec server.publishBuildInfo buildInfo1 } }
我认为您实际上有两种方法可以解决此问题:
找到一种从gradle构建工具获取Gradle版本的方法(例如gradle getVersion(),但我不熟悉Gradle),然后使用Shell脚本获取此版本。如果Gradle命令获取的版本是gradle getVersion(),则可以在管道中执行以下操作:
gradle getVersion()
def projectVersion = sh script: "gradle getVersion()", returnStdout: true def projectGroup= sh script: "gradle getGroup()", returnStdout: true
然后将您的$projectVersion和$projectGroup变量注入当前的管道中。
$projectVersion
$projectGroup
这是相反的方法,我个人更喜欢:不给Artifactory您所有的Gradle项目信息,而是给Gradle您的Artifactory设置并使用Gradle目标轻松发布到Artifactory。
JFrog在“使用Gradle”部分中提供了有关此解决方案的出色文档。基本上,您将遵循以下步骤:
Gradle Build Script Generator
gradle artifactoryPublish