我正在尝试使用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()
,则可以在管道中执行以下操作:
def projectVersion = sh script: "gradle getVersion()", returnStdout: true
def projectGroup= sh script: "gradle getGroup()", returnStdout: true
然后将您的$projectVersion
和$projectGroup
变量注入当前的管道中。
这是相反的方法,我个人更喜欢:不给Artifactory您所有的Gradle项目信息,而是给Gradle您的Artifactory设置并使用Gradle目标轻松发布到Artifactory。
JFrog在“使用Gradle”部分中提供了有关此解决方案的出色文档。基本上,您将遵循以下步骤:
Gradle Build Script Generator
并将其包含在项目构建脚本中gradle artifactoryPublish
可以简单地将当前工件发布到Artifactory问题内容: 我正在创建一个用于不同环境/构建的jenkins管道。每个内部版本都有不同的参数:部署目标,密码,用户名等。 我具有所有这些构建共享的一些通用设置,这些设置已添加到“ Jenkins”->“配置”->“全局属性”中作为键值。 可以说我添加了一个键值,与:名称:CommonName值:Money 现在,我希望能够在我的管道中访问此CommonName变量。我已经尝试了一切。 没有什么可以
问题内容: 我有一个jenkins管道,该管道可以构建Java工件,将其复制到目录中,然后尝试执行外部脚本。 我在管道脚本中使用此语法来执行外部脚本 该脚本只是一个简单的Docker构建脚本,但是由于以下异常,构建将失败: 由于脚本不会创建任何目录,因此该错误令人困惑。它只是构建一个docker映像,并将新构建的java工件放置在该映像中。 如果我在jenkins中创建另一个作业,该作业执行外部脚
我正在尝试使用groovy构建脚本将构建管道迁移到“管道插件”。 我的管道通常是: 测试(梯度) 我想在我的jenkins构建脚本中使用像version/group等的gradle变量来发布到artiFactory中的正确文件夹中。这是artiFactory插件过去会为我处理的事情。如何实现? 对于单个gradle项目,我使用如下内容:
问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1
下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-
问题内容: 我尝试了各种方式,但似乎没有任何效果。这是我的詹金文件。 阶段脚本的输出(“初始化变量”)没有任何作用,它没有设置全局变量ZIP_NODE的值: 然后我们进入阶段(代码-Build),我们没有得到ZIP_NODE的值。请参阅22:34:17的echo声明 感谢@awefsome,我有一些观察,我想补充一下细节:当我使用下面的代码时,我得到了想要的输出,即ZIP_NODE的正确值: 但是