我们有一个运行多个微服务器(jar)的产品。这些都是maven项目。作为CI / CD管道的一部分,我首先为每个微服务创建了maven作业。这些作业创建JAR文件。在成功完成制作jar文件的所有作业之后,我想将所有这些jar文件部署到令人满意的状态。
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中的代码并创建了包并进行部署。但我不需要克隆和创建包。我只需要部署已经由其他工作构建的部分。请帮助解决这个问题
答案 0 :(得分:0)
我认为您的方法是错误的:您将管道视为作业,但实际上,管道是作业的集合,其中每个管道步骤都可以与一系列作业相关联。每个流水线步骤都与特定的“阶段”相关。 一旦了解了这一观点,您就可以采用流水线方法,将其他作业迁移到流水线中,或者只是使用旧样式并定义一个部署作业,该部署作业将在您已经拥有的作业之后执行...
我希望这确实有意义,因为这是我对管道的理解;我也是新手。