java - 将詹金斯人工制品后期构建步骤转换为管道阶段
问题描述
我正在将已在 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 发布到工件,但最初它会发布到some/value/my-app/my-app-1.1.184.pom
我的管道版本发布到根目录/pom.xml
Artifactory 看起来能够从 pom 中读取信息并使用它来正确放置工件,而无需我编写代码,但是如何?
解决方案
可能对某人有帮助的示例:
stage("deploy_mvn") {
environment {
// Must define environmental variable for maven
MAVEN_HOME = '/usr/share/maven'
}
steps {
script {
def artserver = Artifactory.newServer url: 'http://example.com/artifactory', credentialsId: 'blahblah'
def rtMaven = Artifactory.newMavenBuild()
rtMaven.resolver server: artserver, releaseRepo: 'my-repo', snapshotRepo: 'my-ss-repo'
rtMaven.deployer server: artserver, releaseRepo: 'my-local', snapshotRepo: 'my-snapshot-local'
rtMaven.deployer.artifactDeploymentPatterns.addInclude("*.pom").addInclude("*.war").addInclude("*.jar")
rtMaven.deployer.deployArtifacts = true
def buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install'
}
}
}
推荐阅读
- python - 您建议使用哪种分类模型来预测信用评分?
- google-app-engine - 如何将我的域映射到 Google Cloud Shell 的预览服务器 (...-dot-devshell.appspot.com)
- r - 根据 2 个条件将一列拆分为多列
- javascript - JavaScript Datatable.JS / PHP MySQLi 排序问题
- architecture - Flutter:作用域模型以及如何决定在文件中放入什么和多少
- api - 响应谱 - 如何从网站获取数据
- excel - 复制最后一个弹出窗口的内容
- android - 如何修复布局?
- razor - 寻找在没有任何 Web 服务器的控制台应用程序中呈现 Razor cshtml 页面的最简单选项
- real-time - RTEMS Source Builder - Set Builder, 5 (f07d2b6e9ad7) error: exe: not found: (__xz) xz error: host build environment is not set correct