使用jenkins管道将所有工件部署到Artifactory

时间:2017-11-14 12:07:33

标签: jenkins jenkins-pipeline artifactory

我们有一个运行多个微服务器(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中的代码并创建了包并进行部署。但我不需要克隆和创建包。我只需要部署已经由其他工作构建的部分。请帮助解决这个问题

1 个答案:

答案 0 :(得分:0)

我认为您的方法是错误的:您将管道视为作业,但实际上,管道是作业的集合,其中每个管道步骤都可以与一系列作业相关联。每个流水线步骤都与特定的“阶段”相关。 一旦了解了这一观点,您就可以采用流水线方法,将其他作业迁移到流水线中,或者只是使用旧样式并定义一个部署作业,该部署作业将在您已经拥有的作业之后执行...

我希望这确实有意义,因为这是我对管道的理解;我也是新手。