【发布时间】:2019-01-29 15:28:23
【问题描述】:
我的 .Jenkinsfile 是这样的:
properties([[$class: 'GitLabConnectionProperty', gitLabConnection: 'gitlab@srv']])
node {
env.JAVA_HOME = tool 'JDK 7'
def mvnHome = tool 'Maven 3.2.2'
def nodeJS = tool 'IA_NodeJS'
env.PATH = "${mvnHome}/bin:${nodeJS}/bin:${env.JAVA_HOME}/bin:${env.PATH}"
stage ('checkout') {
checkout scm
}
stage ('build') {
gitlabCommitStatus("build") {
// your build steps
sh 'mvn clean install -Denv=dev -P !faster'
}
}
stage ('upload') {
gitlabCommitStatus("upload") {
def server = Artifactory.server "artifactory@ibsrv02"
def buildInfo = Artifactory.newBuildInfo()
buildInfo.env.capture = true
buildInfo.env.collect()
def uploadSpec = """{
"files": [
{
"pattern": "**/target/*.jar",
"target": "libs-snapshot-local"
}, {
"pattern": "**/target/*.pom",
"target": "libs-snapshot-local"
}, {
"pattern": "**/target/*.war",
"target": "libs-snapshot-local"
}
]
}"""
// Upload to Artifactory.
server.upload spec: uploadSpec, buildInfo: buildInfo
buildInfo.retention maxBuilds: 10, maxDays: 7, deleteBuildArtifacts: true
// Publish build info.
server.publishBuildInfo buildInfo
}
}
}
使用这种方法,jenkins 上传工件而不使用“maven 风格”布局(包子文件夹和 poms)。
我想将生成的工件上传到 Artifactory,就像正常作业上传它并选中“Maven3-Artifactory Integration”一样。
【问题讨论】:
-
为什么不使用
mvn deploy? -
我正在将作业转换为没有
mvn deploy的 jenkinsfile。我想在不更改 poms 的情况下转换它。 @khmarbaise 如果不可能,我会更换 poms -
此外,我们中的一些人还有后续阶段,这些阶段也必须成功才能让合并/拉取请求被接受。使用 mvn deploy 会导致工件被部署,即使对于构建它们的代码没有合并的被拒绝的拉取请求。(更不用说我个人不喜欢为开发人员提供从未知构建环境/配置部署工件的能力. 喜欢隔离到 CI 构建。)
标签: maven jenkins artifactory jenkins-pipeline