DevOps / Jenkins / Nexus

Jenkins集成Nexus对Maven制品管理

浅时光 · 3月27日 · 2020年 · 13748次已读

一、总体流程

开发人员文章来源(Source):https://www.dqzboy.com通过SVN或者Git提交代码至代码仓库,每个发布文章来源(Source):https://www.dqzboy.com的版本都会进行更新pom.xml信息。然后Jenkins Pipe文章来源(Source):https://www.dqzboy.comline定义参数读取指定pom文件中的相关信息,通过nexus插件上传制品到n文章来源(Source):https://www.dqzboy.comexus;最后通过nexus插件可以在Job的Web界面获取文章来源(Source):https://www.dqzboy.com到最新的包下载地址,结合shell脚本进行下载。

二、项目配置

  • pom.xml文件中主要版本相关信息
    • groupId:业务名称简称
    • artifactId:应用名称
    • packaging:项目的打包类型,pom、jar、war
    • version:版本信息
Jenkins集成Nexus对Maven制品管理-浅时光博客

三、所需插件

  • Pipeline Utility Steps: 在当前工作目录中查找文件。
  • Nexus Artifact Uploader:上传制品到制品库
  • Maven Artifact ChoiceListProvider (Nexus)文章来源(Source):https://www.dqzboy.com:读取制品库中的文件
  • Nexus Plat文章来源(Source):https://www.dqzboy.comform:一个将Nexus Repository Manager和Nexus Lifecycle集成到Jenkins作业中的插件

四、脚本编写

1、生成DSL语句

  • 通过Jenkins流水线语法生成器,生成push Nexus的DSL
文章来源(Source):https://www.dqzboy.com
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
  • 设置连接Nex文章来源(Source):https://www.dqzboy.comus仓库的用户凭据
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
  • 查看Nexus的用户凭据的唯一标识
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客

2、编写Pipeline

pipeline {
    agent  { 
        node { label 'master'} 
    }
#此处省略了多个步骤,直接上传制品的步骤
stages {
 stage ('上传制品') {
            steps {
                script {
                    def nexusDate = sh returnStdout: true, script: 'date +%Y%m%d-%H%M%S'
                    def pom = readMavenPom file: './项目目录/pom.xml' #指定读取的pom文件路径
                     nexusArtifactUploader(artifacts: [[artifactId: "${pom.artifactId}",
                                       classifier: '',
                                       file: "./项目目录/target/${pom.artifactId}-${pom.version}.${pom.packaging}",
                                       type: "${pom.packaging}"]],
                              credentialsId: 'Nexus凭据ID',
                              groupId: "${pom.groupId}",
                              nexusUrl: 'Nexus—IP:8090',
                              nexusVersion: 'nexus3',
                              protocol: 'http',
                              repository: "maven-releases(Nexus仓库名称)",
                              version: "${pom.version}-${nexusDate}-${BUILD_ID}")
                }
            }
        }

        stage('部署') {
            steps {
                script {
                    sh '''
                        ssh ${server_user}@${serverIP} "cd /data/app && wget ${Package}"	#${Package}引用Job参数化构建传的值,然后该值传给由远程目标服务器上的脚本进行引用下载
                    '''
                }

            }
        }
    }
}
  • Nexus配置允许匿名访问服务器,不然通过wget下载会出现401报错,被拒绝。
Jenkins集成Nexus对Maven制品管理-浅时光博客

五、创建JOB

1、创建Job任务

Jenkins集成Nexus对Maven制品管理-浅时光博客

2、参数化构建

  • 执行Jenkins-CD时可以选择部署的Nexus中的制品;依赖插件Maven Artifact ChoiceListProvider (N文章来源(Source):https://www.dqzboy.comexus)
  • 设置连接Nexus仓库的用户凭据;上面我们已经添加了,这里直接选择即可
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客

3、执行发布流程

Jenkins集成Nexus对Maven制品管理-浅时光博客
Jenkins集成Nexus对Maven制品管理-浅时光博客
0 条回应
    本站已安全运行: | 耗时 0.395 秒 | 查询 109 次 | 内存 18.79 MB