【发布时间】:2019-03-02 14:24:59
【问题描述】:
我们有一个运行多个微服务器(jar)的产品。这些都是 Maven 项目。作为 CI/CD 管道的一部分,我首先为每个微服务创建了 maven 作业。这些作业创建 JAR 文件。在所有作业成功完成制作 jar 文件后,我想将所有这些 jar 文件部署到 aftifactory。
Artifactory 插件提供了在创建 JAR 后我们可以部署到 artifactory 的功能。但是这种方法的问题是,它会在每个作业构建成功后部署到工件。
所有工作成功完成后产品稳定。所以有了这个确认,我必须开始部署。
node {
def server
def buildInfo
def rtMaven
stage ('Clone') {
git url: 'https://github.com/jfrogdev/project-examples.git'
}
stage ('Artifactory configuration') {
// Obtain an Artifactory server instance, defined in Jenkins --> Manage:
server = Artifactory.server SERVER_ID
rtMaven = Artifactory.newMavenBuild()
rtMaven.tool = MAVEN_TOOL // Tool name from Jenkins configuration
rtMaven.deployer releaseRepo: 'libs-release-local', snapshotRepo: 'libs-snapshot-local', server: server
rtMaven.resolver releaseRepo: 'libs-release', snapshotRepo: 'libs-snapshot', server: server
rtMaven.deployer.deployArtifacts = false // Disable artifacts deployment during Maven run
buildInfo = Artifactory.newBuildInfo()
}
stage ('Test') {
rtMaven.run pom: 'maven-example/pom.xml', goals: 'clean test'
}
stage ('Install') {
rtMaven.run pom: 'maven-example/pom.xml', goals: 'install', buildInfo: buildInfo
}
stage ('Deploy') {
rtMaven.deployer.deployArtifacts buildInfo
}
stage ('Publish build info') {
server.publishBuildInfo buildInfo
}
}
上述管道语法从 git 克隆代码并创建包并部署它。但我不需要克隆和创建包。我只需要部署其他工作已经构建的。请帮忙解决这个问题
【问题讨论】:
-
如果只需要部署,有没有考虑过使用Artifactory的CLI或者REST API?您将无法通过这种方式将构建信息发布到 Artifactory,但您可以轻松地将任何文件上传到您的 Artifactory 存储库。
-
是的。如果我们使用 REST API,我们将无法获取构建信息。我只使用 Artifactory 插件。在每个微服务构建完成后部署到工件中
标签: jenkins jenkins-pipeline artifactory