【发布时间】:2019-11-11 22:18:37
【问题描述】:
我正在将已在 UI 中配置的 Jenkins 作业转换为使用声明性管道脚本配置的作业。
这是一个 Maven 构建的 Java 项目,具有部署到 Artifactory 的构建后操作
构建和测试步骤很简单。我们可以使用这个 UI
并将其转换为 mvn 命令sh "mvn clean install"。
后期构建步骤的配置很简单在 UI 中
选中了三个文本框
- 部署 Maven 工件
- 从构建信息中过滤排除的工件(我认为没有)
- 捕获和发布构建信息
这会生成并上传丰富的 buildInfo.json,并将正确的工件上传到我们的工件服务器。
我想用管道步骤替换它...阅读此文档https://www.jfrog.com/confluence/display/RTF/Declarative+Pipeline+Syntax 建议构建 maven 作业应该通过让 artifactory 插件运行 maven 命令来完成。我想避免这种情况,因为我们目前不这样做并且我最终希望消除在服务器上存储该项目的工件的需要。
在 pom 中我们会看到
<groupId>some.value</groupId>
<artifactId>my-app</artifactId>
<version>1.1.184</version>
我有一个部分工作的脚本:
stage('publish common code to artifactory') {
steps {
rtUpload (
serverId: 'Artifactory',
spec: '''{
"files": [
{
"pattern": "applications/my-app/pom.xml",
"target": "libs-release-local"
}
]
}''',
buildName: 'my-app',
buildNumber: env.GIT_HASH_VERSION
)
rtPublishBuildInfo (
serverId: "Artifactory",
buildName: 'my-app',
buildNumber: env.GIT_HASH_VERSION
)
}
}
这会将 pom 发布到 artifactory,但最初它将发布到 some/value/my-app/my-app-1.1.184.pom 我的管道版本以 /pom.xml 发布到根目录
Artifactory 看起来能够从 pom 读取信息并使用它来正确放置工件,而无需我编写代码,但是如何?
【问题讨论】:
-
必须是权限问题,我们使用的是不同版本的工件,但是当我查看该 SO 问题中指定的页面时,我看不到与答案建议的相同信息
-
您可以参考JFrog github.com/jfrog/project-examples/tree/master/jenkins-examples/…提供的以下示例创建管道Jenkins作业并提供所需的详细信息。如果您需要任何帮助,请告诉我。
标签: java maven jenkins-pipeline artifactory